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

2024-01-04

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

我设法在 Google 中搜索并获取包含搜索结果的 json 对象。该对象包含包含图像的网站,而不是图像地址

code:

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 接口描述于JSON 开发人员指南 https://developers.google.com/image-search/v1/jsondevguide。尤其,JSON 参考 https://developers.google.com/image-search/v1/jsondevguide#json_reference部分概述了响应格式和保证字段。您可以使用以下值url财产。

给定 URL,您可以使用以下命令读取图像并将其写入磁盘ImageIO http://docs.oracle.com/javase/6/docs/api/javax/imageio/ImageIO.html。这是相关的tutorial http://docs.oracle.com/javase/tutorial/2d/images/index.html.

如果不需要图像处理和演示,那么您可以使用HttpURL连接 http://docs.oracle.com/javase/6/docs/api/java/net/HttpURLConnection.html只需下载文件即可。

编辑:示例

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

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();
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用谷歌API保存谷歌图像中的图像? 的相关文章

  • “_加载小部件时出现问题”消息

    加载小部件时 如果找不到资源或其他内容 则会显示 加载小部件时出现问题 就这样 惊人的 此消息保留在主屏幕上 甚至没有说明加载时遇到问题的小部件 我通过反复试验弄清楚了这一点 但我想知道发生这种情况时是否有任何地方可以找到错误消息 Andr
  • 如果在睡眠线程上调用interrupt()会发生什么?

    我有一个线程 然后run I call sleep 如果我中断这个线程会发生什么 MyThread extends Thread public void run try sleep 1000000 catch InterruptedExce
  • 为什么 java 编译器不报告 Intellij 中多播表达式的未经检查的强制转换警告?

    为什么下面的代码没有报告 Intellij IDEA 的未经检查的警告jdk 1 8 0 121自从Supplier
  • Spring安全“记住我”cookie在第一个请求中不可用

    我无法在登录请求后检索 Spring 记住我 cookie 但它在对受保护页面的下一个请求中工作正常 谁能告诉我怎样才能立即得到它 我在登录请求中设置了记住我的 cookie 但在 Spring 重定向回原始 受保护的 url 后无法检索它
  • 图像梯度角计算

    我实际上是按照论文的说明进行操作的 输入应该是二进制 边缘 图像 输出应该是一个新图像 并根据论文中的说明进行了修改 我对指令的理解是 获取边缘图像的梯度图像并对其进行修改 并使用修改后的梯度创建一个新图像 因此 在 MATLAB Open
  • 如何在 JSP 中导入类?

    我是一个完全的JSP初学者 我正在尝试使用java util List在 JSP 页面中 我需要做什么才能使用除以下类之外的类java lang 使用以下导入语句进行导入java util List 顺便说一句 要导入多个类 请使用以下格式
  • 使用 RecyclerView 适配器在运行时更改布局屏幕

    我有两个布局文件 如下所示 如果列表中存在数据 则我显示此布局 当列表为空时 我会显示此布局 现在我想在运行时更改布局 当用户从列表中删除最后一项时 我想将布局更改为第二张图片中显示的 空购物车布局 In getItemCount Recy
  • 在 HTTP 标头中发送 UTF-8 值会导致 Mojibake

    我想使用 servlet 发送阿拉伯语数据HTTPServletResponse给客户 我正在尝试这个 response setCharacterEncoding UTF 8 response setHeader Info arabicWo
  • Firestore - RecycleView - 图像持有者

    我不知道如何编写图像的支架 我已经设置了 2 个文本 但我不知道图像的支架应该是什么样子 你能帮我告诉我图像的文字应该是什么样子才能正确显示吗 holder artistImage setImageResource model getArt
  • Java:正则表达式排除空值

    在问题中here https stackoverflow com questions 51359056 java regexp for a separated group of digits 我得到了正则表达式来匹配 1 到 99 之间的一
  • 如何获取 WebElement 的父级[重复]

    这个问题在这里已经有答案了 我试过了 private WebElement getParent final WebElement webElement return webElement findElement By xpath 但我得到
  • 将表值参数与 SQL Server JDBC 结合使用

    任何人都可以提供一些有关如何将表值参数 TVP 与 SQL Server JDBC 一起使用的指导吗 我使用的是微软提供的6 0版本的SQL Server驱动程序 我已经查看了官方文档 https msdn microsoft com en
  • 计算日期之间的天数差异

    在我的代码中 日期之间的差异是错误的 因为它应该是 38 天而不是 8 天 我该如何修复 package random04diferencadata import java text ParseException import java t
  • Java 收集返回顶级项目的映射的嵌套流

    我有以下模型 class Item String name List
  • Android Studio 将音乐文件读取为文本文件,如何恢复它?

    gameAlert mp3是我的声音文件 运行应用程序时 它询问我该文件不与任何文件类型关联 请定义关联 我选择TextFile错误地 现在我的音乐文件被读取为文本文件 我如何将其转换回music file protected void o
  • 如何配置 WebService 返回 ArrayList 而不是 Array?

    我有一个在 jax ws 上实现的 java Web 服务 此 Web 服务返回用户的通用列表 它运行得很好 Stateless name AdminToolSessionEJB RemoteBinding jndiBinding Admi
  • Dispatcher-servlet 无法映射到 websocket 请求

    我正在开发一个以Spring为主要框架的Java web应用程序 特别使用Spring core Spring mvc Spring security Spring data Spring websocket 像这样在 Spring 上下文
  • 解析输入,除了 System.in.read() 之外不使用任何东西

    我很难找到具体的细节System in read 有效 也许有人可以帮助我 似乎扫描仪会更好 但我不允许使用它 我被分配了一个任务 我应该以 Boolean Operator Boolean 的形式读取控制台用户输入 例如T F 或 T T
  • 如何在Java中正确删除数组[重复]

    这个问题在这里已经有答案了 我刚接触 Java 4 天 从我搜索过的教程来看 讲师们花费了大量精力来解释如何分配二维数组 例如 如下所示 Foo fooArray new Foo 2 3 但我还没有找到任何解释如何删除它们的信息 从内存的情
  • Hibernate 和可序列化实体

    有谁知道是否有一个框架能够从实体类中剥离 Hibernate 集合以使它们可序列化 我查看了 BeanLib 但它似乎只进行实体的深层复制 而不允许我为实体类中的集合类型指定实现映射 BeanLib 目前不适用于 Hibernate 3 5

随机推荐

  • Vaadin 和 Spring MVC 集成

    我正在考虑将 Spring MVC 与 Vaadin 框架一起使用的可能性 是否有任何记录在案的方法可以使它们很好地协同工作 另外 将它们一起使用是个好主意吗 与表现有关 我将在专用服务器上运行该应用程序 为了让我的问题更清楚一些 我如何从
  • SQL Server 中“描述表”的等效项是什么?

    我有一个 SQL Server 数据库 我想知道它有哪些列和类型 我更喜欢通过查询来完成此操作 而不是使用像企业管理器这样的 GUI 有没有办法做到这一点 您可以使用sp columns http msdn microsoft com en
  • 引用 google-play-services 库

    我正在使用 Google Maps Android API v2 开发一个项目 当我开始引用 google play services lib 时遇到问题 我的项目图标上出现一个红色感叹号 并且 问题 选项卡中出现一条错误消息 我使用的是
  • EF Code First 不生成表

    我正在开发 EF Code First 站点 并且编写了我的类和上下文类 其来源是 using System using System Collections Generic using System Linq using System T
  • 使子元素(带填充)为父元素的 100% 宽度和高度

    是否可以使子元素 带填充 具有其父元素的 100 宽度和高度 html div div div css child padding 15px 我尝试将子项设置为 100 宽度 高度 但这会使子项由于填充而大于父项 我还尝试使子位置绝对并将顶
  • 修复通过 REST API 上传文件时 Artifactory 中的校验和

    我使用下面的代码通过 Artifactory 的 REST API 上传文件 我的问题是 当我通过 GUI 查看文件时 我收到以下消息 客户端未发布校验和值 如果您信任上传的内容 您可以通过单击 修复 来接受实际的校验和 校验和按钮 如何修
  • 如何使用响应大小的图像来防止卡顿并减少布局偏移?

    我的网站托管了大量各种尺寸的图像 这些图像具有响应能力 并且可以在从桌面到移动设备的所有浏览器宽度上更改大小 我在 Google Search Console 中看到我的 CLS 累积布局偏移 很差 为 0 25 秒 我的网站布局随着图像加
  • 如何用C实现动态调度表

    首先 我了解如何使用函数指针和字符串或其他查找来实现调度表 这不是挑战 我正在寻找的是一种动态向该表添加条目的方法在编译时 我希望的代码结构类型是这样的 Strategy h 包含调度程序的函数定义和调度表定义 Strategy c 包含调
  • 如何在iPhone OS上通过编程发送usd请求

    如何在iPhone OS上通过编程发送usd请求 例如 100 CTCallDialWithID 100 1 并与 CoreTelephony 链接
  • Pycharm 中的多个右边距

    我正在学习 Pycharm Community Edition 3 4 我想知道除了其余代码的常规边距之外 是否可以仅为注释和文档字符串设置正确的边距 我问这个问题是因为我试图遵守 PEP8 指南 即每个注释 72 个字符 常规代码 79
  • 是否有用于创建特定大小的测试文件的Python模块?

    我有一台已上传文件的服务器 我需要分析到该服务器的各种文件大小的上传 响应时间 即上传 10kb 文件 100mb 文件和许多其他大小的文件需要多长时间 我想避免手动创建所有文件并存储它们 是否有一个 Python 模块可以让您创建任意大小
  • 如何从 java 检查 PATH 和 CLASSPATH 环境变量?

    我正在制作一个java程序来使用JMF读取audio wav文件 每次我的计算机重新启动时 我都必须从cmd设置路径 set CLASSPATH WINDIR java classes jmf jar WINDIR java classes
  • 当我关闭 Zope 服务器时,它显示 AttributeError

    我正在使用 Plone 4 3 3 创建我的 Plone 站点 但是当我关闭服务器时 它显示以下错误 Traceback most recent call last File Plone zinstance parts instance b
  • 如何从 Gradle 中的 JAR 中排除资源并通过 IntelliJ 运行

    我最近开始工作 7 年多旧项目 which 使用 Ant Ivy用于依赖关系和构建管理 我的任务是将其转换为 Gradle但结构有点不传统 projectRoot folderA folderB projectX conf file1 tx
  • 如何将数据集对象存储到数据类型对象的包变量中?

    如何将数据集对象存储到数据类型的包变量中Object并将其从脚本任务中分配回另一个数据集对象 这是我之前的答案中的代码示例 它展示了如何在脚本任务中从对象变量填充 OleDB 数据适配器 您可以使用数据流任务中的记录集目标将记录集存储到对象
  • 如何合并两个有序的对象列表?

    public class ListMerge public static void main String args Scanner input new Scanner System in System out println Input
  • 如何在 Entity Framework Core 中克隆实体?

    我尝试使用 SetValues 方法克隆实体 但出现以下错误 无法跟踪实体类型 TariffPeriod 的实例 因为已跟踪具有相同键值 Id 的另一个实例 附加现有实体时 请确保仅附加一个具有给定键值的实体实例 这是代码 var peri
  • 确保 MediaPlayer onCompletionListener 被调用并且线程没有死

    我有一个反复出现的警报 它会触发一个 BroadcastReceiver 启动一个 IntentService 该 IntentService 使用 MediaPlayer 播放声音 但是 我的 OnCompletionListener 用
  • 向 D3.js 轴添加特定刻度

    我创建了一个轴d3 svg axis和时间刻度 并对刻度生成器产生的刻度感到满意 但是 我想确保始终标记特定值 例如 如果生成器生成以下日期 2000年1月1日 2001年1月1日 2002年1月1日 2003年1月1日 我可能想让轴显示
  • 如何使用谷歌API保存谷歌图像中的图像?

    我正在尝试在 Google 图像中搜索一些不同的内容 并使用 java Google API 保存每个查询的第一个结果 我设法在 Google 中搜索并获取包含搜索结果的 json 对象 该对象包含包含图像的网站 而不是图像地址 code