首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java flickr和flickrj下载用户图片

java flickr和flickrj下载用户图片
EN

Stack Overflow用户
提问于 2012-05-20 21:39:17
回答 2查看 1.9K关注 0票数 0

你好,我是flickrj库的新手。

但是我有基本的java知识。

我正在工作的项目需要我认证到flickr中,然后将带有地理标记的图像下载到本地硬盘驱动器的文件夹中。该程序将是桌面应用程序。

我将程序分解为3个步骤。

1.完成身份验证。(我已经成功了)

2.尝试下载用户在通过身份验证时拥有的所有照片。

3.尝试稍微修改代码,使其只下载带有地理标记的图像。

我的问题在第二步。我不能下载登录的用户图像,更不用说带地理标记的图像了。我正在尝试Daniel Cukier here提供的代码

但我遇到了问题。我的netbeans只是从.getOriginalAsStream()部分的第77行划掉,并显示错误"java.lang.RuntimeException:不可编译的源代码-错误的sym类型: java.io.ByteArrayOutputStream.write“

根据我的理解,netbeans划掉一行的意思是,它被贬低了,但它不应该仍然有效吗?是什么阻碍了整个问题的发展?

我已经尝试过研究,基本上我不得不承认,这超出了我的能力范围。如果有人知道我做错了什么,我将不胜感激。

附言:我并不想被喂食,但请以一种笨蛋友好的方式回答我,因为我还是一个学生,我的java也不是最好的。

这就是我到目前为止所掌握的代码。

代码语言:javascript
复制
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);
}

}

EN

回答 2

Stack Overflow用户

发布于 2012-05-21 22:35:11

您对删除的解释是正确的,即getOriginalAsStream()已被弃用。看起来您可能需要修改代码以使用PhotosInterface.getImageAsStream(),并将原始大小作为参数之一传递。

要调整NetBeans对于不推荐使用的方法的行为,可以访问@AljoshaBre和this one推荐的链接。

票数 0
EN

Stack Overflow用户

发布于 2017-05-29 19:29:08

如果你想从Flickr下载你所有的照片,如果你有一台mac电脑,这是可能的。

在Apple Store上下载Aperture程序并进行安装。

安装后,打开Aperture。

转到preferences。

单击“Accounts”选项卡。

单击左下角的加号(+)以添加照片服务。

添加Flicker选项。

按照登录和授权说明进行操作。

完成了!您的所有照片都将在~/images/上的光圈库中同步

我希望我能帮上忙。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10673895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档