【问题标题】:Copying an image from url using java使用java从url复制图像
【发布时间】:2012-06-28 13:06:50
【问题描述】:

我正在尝试从 URL 下载图像。我使用 Apache Commons 库:

org.apache.commons.io.FileUtils
                .copyURLToFile(
                        new URL(
                                "https://lh3.ggpht.com/AXYMUV5cpne2vE9U3X8x87HgrbwijwiG50_yOnehU2MUPKDoJky-BKFOPZzZ07Pug8U=h230"),
                        new File("test.png"));

打开图片时显示不是 PNG 文件。这是从url下载图片到本地的好方法吗?

更新了。 谢谢大家的回答我不明白我需要获取connection.getContentType();,然后将其保存为jpg或png。

【问题讨论】:

  • 那可能是因为你下载的图片是jpeg
  • 将下载的图片重命名为test.jpg,然后尝试打开。
  • 如何判断是jpg还是png
  • 我刚刚在您的测试代码中查看了该 URL。你的意思是你想让代码自动确定吗?
  • “如何判断是jpg还是png”:应该有HTTP Content-type header。

标签: java


【解决方案1】:

如果你检查 url,它是 JPEG 文件。将文件名重命名为test.jpeg后尝试执行程序..

【讨论】:

    【解决方案2】:

    检查内容类型见SO Question。 然后使用它将文件保存为正确的类型。

    【讨论】:

      【解决方案3】:

      在这个 URL 上运行 wget 并查看 HTTP 响应,看起来文件类型被明确指定为 JPEG:

      --2012-06-27 16:55:30-- https://lh3.ggpht.com/AXYMUV5cpne2vE9U3X8x87HgrbwijwiG50_yOnehU2MUPKDoJky-BKFOPZzZ07Pug8U=h230 正在解析 lh3.ggpht.com... 74.125.237.108, 74.125.237.106, 74.125.237.107, ... 正在连接到 lh3.ggpht.com|74.125.237.108|:443... 已连接。 已发送 HTTP 请求,等待响应... HTTP/1.0 200 正常 访问控制允许来源:* 电子标签:“v1” 到期:2012 年 6 月 28 日星期四 06:50:40 GMT 内容处置:inline;filename="unnamed.jpg" 内容类型:图片/jpeg X-Content-Type-Options: nosniff 日期:格林威治标准时间 2012 年 6 月 27 日星期三 06:50:40 服务器:菲菲 内容长度:46597 X-XSS-防护:1;模式=块 缓存控制:公共,最大年龄=86400,无转换 年龄:290 连接:保持活动 长度:46597 (46K) [图片/jpeg]

      【讨论】:

        猜你喜欢
        • 2014-09-18
        • 1970-01-01
        • 2012-04-05
        • 1970-01-01
        • 1970-01-01
        • 2012-11-08
        • 2017-06-12
        • 2012-05-04
        • 2021-09-27
        相关资源
        最近更新 更多