0

こんにちは、flickrj ライブラリは初めてです。
ただし、基本的なJavaの知識があります。
私が取り組んでいるプロジェクトでは、flickr で認証してから、ジオタグ付きの画像をローカル ハード ドライブのフォルダーにダウンロードする必要があります。プログラムは、デスクトップ アプリケーション プログラムになります。
3 つのステップに分けてプログラムに取り組んでいます。



1.適切な認証が完了します。(私は成功しました)
2.認証されたときにユーザーが持っているすべての写真をダウンロードしてみてください。
3.ジオタグ付きの画像のみをダウンロードするように、コードを少し変更してみてください。

私の問題はステップ 2 にあります。ジオタグ付きの画像はもちろん、ログインしているユーザーの画像もダウンロードできません。ここでDaniel Cukier が提供するコードを試していますが、
問題が発生しています。私のネットビーンズは、.getOriginalAsStream() 部分の 77 行目で、「java.lang.RuntimeException: Uncompilable source code - Erroneous sym type: java.io.ByteArrayOutputStream.write」というエラーが表示されるだけです
。つまり、減価償却されていますが、まだ機能するべきではありませんか? この問題全体を妨げているのは何ですか?

私は調査を試みましたが、基本的に認めざるを得ません。トラブルシューティングを行う能力を超えています。誰かが私が間違っていることについて何か考えを持っているなら、私はとても感謝しています.
Ps: 私はスプーンで食べさせられるつもりはありませんが、私はまだ学生であり、私の Java は最高ではないので、バカに優しい方法で私に答えてください。

このコードは私がこれまでに持っているものです。

import com.aetrion.flickr.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.Properties;

import javax.xml.parsers.ParserConfigurationException;

import org.xml.sax.SAXException;

import com.aetrion.flickr.auth.Auth;
import com.aetrion.flickr.auth.AuthInterface;
import com.aetrion.flickr.auth.Permission;
import com.aetrion.flickr.photos.Photo;
import com.aetrion.flickr.photos.PhotoList;
import com.aetrion.flickr.photos.PhotosInterface;
import com.aetrion.flickr.util.IOUtilities;
import java.io.*;
import java.util.Iterator;
import org.apache.commons.io.FileUtils;


public class authenticate {
Flickr f;
RequestContext requestContext;
String frob = "";
String token = "";
Properties properties = null;

public authenticate() throws ParserConfigurationException, IOException, SAXException {
    InputStream in = null;
    try {
        in = getClass().getResourceAsStream("/setup.properties");
        properties = new Properties();

        properties.load(in);
    } finally {
        IOUtilities.close(in);
    }
    f = new Flickr(
        properties.getProperty("apiKey"),
        properties.getProperty("secret"),
        new REST()
    );
    Flickr.debugStream = false;
    requestContext = RequestContext.getRequestContext();
    AuthInterface authInterface = f.getAuthInterface();
    try {
        frob = authInterface.getFrob();
    } catch (FlickrException e) {
        e.printStackTrace();
    }
    System.out.println("frob: " + frob);
    URL url = authInterface.buildAuthenticationUrl(Permission.DELETE, frob);
    System.out.println("Press return after you granted access at this URL:");
    System.out.println(url.toExternalForm());
    BufferedReader infile =
      new BufferedReader ( new InputStreamReader (System.in) );
    String line = infile.readLine();
    try {
        Auth auth = authInterface.getToken(frob);
        System.out.println("Authentication success");
        // This token can be used until the user revokes it.
        System.out.println("Token: " + auth.getToken());
        System.out.println("nsid: " + auth.getUser().getId());
        System.out.println("Realname: " + auth.getUser().getRealName());
        System.out.println("Username: " + auth.getUser().getUsername());
        System.out.println("Permission: " + auth.getPermission().getType());

        PhotoList list = f.getPhotosetsInterface().getPhotos("72157629794698308", 100, 1);
        for (Iterator iterator = list.iterator(); iterator.hasNext();) {
        Photo photo = (Photo) iterator.next();
        File file = new File("/tmp/" + photo.getId() + ".jpg");
        ByteArrayOutputStream b = new ByteArrayOutputStream();
        b.write(photo.getOriginalAsStream());
        FileUtils.writeByteArrayToFile(file, b.toByteArray());
}






    } catch (FlickrException e) {
        System.out.println("Authentication failed");
        e.printStackTrace();
    }
}




public static void main(String[] args) {
    try {
        authenticate t = new authenticate();
    } catch(Exception e) {
        e.printStackTrace();
    }
    System.exit(0);
}

}

4

2 に答える 2

0

getOriginalAsStream()が非推奨であるという取り消し線の解釈は正しいです。引数の 1 つとして ORIGINAL サイズを渡して、PhotosInterface.getImageAsStream()を使用するようにコードを作り直す必要があるようです。

非推奨のメソッドに関して NetBeans の動作を調整するには、@AljoshaBre が推奨するリンクとこのリンクをたどることができます。

于 2012-05-21T14:35:10.570 に答える