gpt4 book ai didi

java - 如何使用谷歌API保存谷歌图像中的图像?

转载 作者:行者123 更新时间:2023-12-02 15:02:26 24 4
gpt4 key购买 nike

我正在尝试在 Google 图像中搜索一些不同的内容,并使用 java Google API 保存每个查询的第一个结果。

我设法在 Google 中搜索并获取包含搜索结果的 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)

10x

最佳答案

JSON 接口(interface)描述于 JSON Developer's Guide 。特别是JSON reference部分概述了响应格式和保证字段。您可以使用 url 属性的值。

给定 URL,您可以使用 ImageIO 读取图像并将其写入磁盘。这是相关的tutorial .

如果不需要图像处理和演示,那么您可以使用 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();
}
}
}

关于java - 如何使用谷歌API保存谷歌图像中的图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11485578/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com