用java保存时图像改变颜色[重复]

2023-11-26

当我保存这张图片时:

Holiday Doodle

用这个方法:

private final static Path ROOT_PATH = Paths.getPath("C:/images");

private static void saveImageFromWebSimple(final String url) {
    URL u = null;
    try {
        u = new URL(url);
    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    String file = url.substring(url.indexOf("//") + 2);
    Path filePath = ROOT_PATH.resolve(file);
    try {
        Files.createDirectories(filePath.getParent());
        BufferedImage img = ImageIO.read(u);
        ImageIO.write(img, "jpg", filePath.toFile());
    } catch (IOException e) {
        e.printStackTrace();
    }
}

这是我的结果:

Result

但并非所有图片都会出现这种情况。

你能告诉我为什么吗?


根据@uckelman的comment on 这个帖子,当图像缺少 JFIF 标头时,Java 解码器对图像格式做出与大多数其他渲染不同的假设:

我相信您关于如何检测不良 JPEG 问题的答案 被发现here and here。您拥有的是没有 JFIF 标记的 JPEG。 在这种情况下,所有其他图像加载器都假设数据是 YCbCr, 除了ImageIO,当通道1和2时,它假设它是RGB 没有进行二次抽样。所以,检查前4个字节是否为FF D8 FF E1,如果是,通道 1 和 2 是否进行二次采样。这就是 您需要转换的情况。

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

用java保存时图像改变颜色[重复] 的相关文章

随机推荐

  • Laravel Mail::send() 发送到多个收件人或密件抄送地址

    我似乎无法成功发送至multiple使用 Laravel 时的地址Mail send 回调 但是当我只指定时 代码确实有效one接受者 我尝试过链接 for example emails array email protected emai
  • 无法在已停止的 SparkContext 上调用方法

    当我运行以下测试时 它会抛出 无法在已停止的 SparkContext 上调用方法 可能的问题是我使用TestSuiteBase和流 Spark 上下文 在行val gridEvalsRDD ssc sparkContext paralle
  • 使用 linq 删除列表中的重复项

    我有课Items with properties Id Name Code Price 名单Items填充有重复的项目 例如 1 Item1 IT00001 100 2 Item2 IT00002 200 3 Item3 IT00003 1
  • 使用数据注释的有条件必需的属性

    我有一堂这样的课 public class Document public int DocumentType get set Required public string Name get set Required public strin
  • JAVA使用google语音识别API

    我正在尝试使用谷歌语音识别 API 这是我写的代码 http pastebin com zJEhnJ74 有用 我从服务器得到答案 status 5 id 8803471b14a2310dfcf917754e8bd4a7 1 hypothe
  • MySQL - 唯一外键

    我必须使其中一个外键唯一 问题是 我从 phpMyAdmin 收到以下消息 The following indexes appear to be equal and one of them should be removed consign
  • 查询 DNS 服务记录以查找主机名和 TCP/IP

    在一篇关于生命科学标识符 see LSID Tester 用于测试生命科学标识符解析服务的工具 罗德里克 DM 佩奇博士写道 给定 LSID urn lsid ubio org namebank 11815 在 DNS 中查询 SRV 记录
  • 从已使用的命名空间中排除类

    我所有 C 文件的第一条语句是 使用系统 现在 在框架版本 4 中 该命名空间包含一个名为 Action 的类 这也是我自己的代码中经常使用的命名空间中的类的名称 现在当然有冲突 当然 我可以通过在我之前使用 Action 的地方使用显式的
  • C++ 中的构造函数和对象数组

    我正在尝试用 C 创建一个应用程序 在应用程序中 我有默认构造函数和另一个带有 3 个参数的构造函数 用户从键盘提供一个整数 该整数将用于使用非默认构造函数创建对象数组 不幸的是 到目前为止我还无法完成它 因为我在创建对象数组时遇到问题 它
  • Rails:Turbo Stream Broadcast 不更新视图

    我有一个 Turbo Stream 它没有更新视图 我不知道为什么 我在类似的配置中设置了另外两个广播 运行良好 从我所看到的来看 一切看起来都应该正常工作 我只是没有在前端获得更新 我错过了一些明显的事情吗 partial div div
  • 打开文件时出现“无效参数”错误(并且不读取文件)

    我正在尝试编写代码 在文本文件中获取 2 个数字 然后将它们分开 将答案显示为最重的分数 当我在程序中输入自己的值时 我已经让分数部分开始工作 但我无法让程序识别文本文件 我尝试将它们放在同一目录中并放置文件的完整系统路径 但到目前为止没有
  • 使用供应商目录中的 autoloader.php 自动加载无法正常工作

    我在自动加载 Composer 时遇到问题 因为自动加载器无法解析 Doctrine ORM Mapping Table 对于单元测试 我创建了带有典型注释的学说实体类
  • Akka 中 Actorref.tell 和 inbox.send 的区别

    所以我开始学习 Akka 并尝试 typesafe 中的示例 所以 Hello Akka 应用程序有以下代码 import akka actor ActorRef ActorSystem Props Actor Inbox import s
  • 如何计算两个日期之间的周数?

    如何计算两个日期之间的周数 例如如下 Declare StartDate as DateTime 01 Jan 2009 Declare EndDate as DateTime 01 June 2009 StartDate and EndD
  • 我可以在 LESS css 字符串插值中进行数学运算吗?

    我的这个少了 我不知道如何在字符串内进行数学运算 bp tablet landscape 1024px bp tablet portrait 768px tablet landscape only only screen and min w
  • 如何在 grails 中断开对象与其休眠会话的连接?

    我正在尝试执行此操作 但出现错误 具有相同标识符值的不同对象已与会话关联 看来我需要从休眠会话中删除 dbObject def object messageParserService parseMessage messageType mes
  • 使用 XML1.1 解析 unicode 字符 (0x2)

    在我的 Java 应用程序中 我需要解析包含控制字符的 XML 文档0x2在 CDATA 内 我尝试了几种方法但无法通过 我想避免任何类型的编码 XML1 1有什么办法吗 我需要解析 CDATA 中包含控制字符 0x2 的 xml 那么那不
  • 我的网站 IE 总是崩溃,无法调试

    我的网站突然开始使 Internet Explorer 崩溃 网站加载并开始执行 javascript 但机器在某个地方爆炸了 我什至没有收到脚本错误 它只是崩溃了 我尝试使用内置调试器手动单步执行每一行 js 但问题当然不会发生 如果我选
  • .NET Framework x509Certificate2 类,HasPrivateKey == true && PrivateKey == null?

    我正在尝试使用最初使用 MMC 的 证书 管理单元导入到 Windows 10 计算机上的 CurrentUser 密钥库中的 X509 证书 相同的过程已在 Windows 8 1 计算机上进行了测试 得到了相同的结果 使用标准 Powe
  • 用java保存时图像改变颜色[重复]

    这个问题在这里已经有答案了 当我保存这张图片时 用这个方法 private final static Path ROOT PATH Paths getPath C images private static void saveImageFr