-->

如何从谷歌的图像使用谷歌API保存图像?(how do save image from google

2019-09-19 12:14发布

我试图在谷歌图像有些不同的搜索和保存的第一个结果与Java API谷歌每次查询。

我设法在谷歌搜索和获取其中包含搜索结果的JSON对象。 该对象包含网站包含图像,而不是像地址

码:

URL url = new URL("https://ajax.googleapis.com/ajax/services/search/images?" +
                    "v=1.0&q="+properties.getProperty(Integer.toString(i))+"&userip=IP");
            URLConnection connection = url.openConnection();
            connection.addRequestProperty("Referer", "images.google.com");

        String line;
        StringBuilder builder = new StringBuilder();
        BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
        while((line = reader.readLine()) != null) {
        builder.append(line);
        }

        JSONObject json = new JSONObject(builder.toString())

我也知道如何保存图像,如果我有图片链接。

我的问题是如何获得第一(或第二或其他)图像正确的地址,而不是网址(例如www.yadayadayada.com/image.png)

10倍

Answer 1:

JSON接口在描述JSON开发人员指南 。 特别地, JSON参考节概述响应格式和有保证的字段。 您可以使用的值url属性。

考虑到URL,就可以读取图像,并将其写入到使用该磁盘的ImageIO 。 下面是相关教程 。

如果不需要的图像处理和演示,那么你可以使用HttpURLConnection类简单地下载文件。

编辑:例如

下面是基于包含在问题的代码一个简单的例子。 它执行搜索并显示第一图像。

import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;

public class TestImage {

    public static void main(String[] args) {
        try{
            URL url = new URL("https://ajax.googleapis.com/ajax/services/search/images?v=1.0&q=Godfather");
            URLConnection connection = url.openConnection();

            String line;
            StringBuilder builder = new StringBuilder();
            BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            while((line = reader.readLine()) != null) {
                builder.append(line);
            }

            JSONObject json = new JSONObject(builder.toString());
            String imageUrl = json.getJSONObject("responseData").getJSONArray("results").getJSONObject(0).getString("url");

            BufferedImage image = ImageIO.read(new URL(imageUrl));
            JOptionPane.showMessageDialog(null, "", "", JOptionPane.INFORMATION_MESSAGE, new ImageIcon(image));
        } catch(Exception e){
            JOptionPane.showMessageDialog(null, e.getMessage(), "Failure", JOptionPane.ERROR_MESSAGE);
            e.printStackTrace();
        }
    }
}


文章来源: how do save image from google images using google API?