在 JavaFX 中保存为 jpg 的图像是粉红色的

2023-11-21

我想将 ImageView 中的图像保存到具有不同分辨率的文件中。将其作为 .png 结果如预期。至于 .jpg - 我将所有文件设为粉红色。

should be blue

诀窍在哪里?这是代码:

Object[] imagesFromFotoListView = ta.myFotoListView.getItems().toArray();
new File(localDir).mkdirs();
for (int i = 0; i < imagesFromFotoListView.length; i++) {
    new File(localDir + "/" + i).mkdirs(); 
    final ImageView iv = new ImageView((Image) imagesFromFotoListView[i]);
    ImageIO.write(SwingFXUtils.fromFXImage(iv.snapshot(null, null), null), "jpg", new File(localModelFotoDir + "/" + i + "/large.jpg")); // JPG THAT FAILS PINK.
    BufferedImage bi = SwingFXUtils.fromFXImage(iv.snapshot(null, null), null);
    int resolution[] = new int[]{500, 250, 75};
    for (int j = 0; j < resolution.length; j++) {
        BufferedImage resizedBImage;
        if (bi.getWidth() == bi.getHeight()) {
            resizedBImage = resizeBufferedImage(bi, Scalr.Method.ULTRA_QUALITY, Scalr.Mode.AUTOMATIC, resolution[j], resolution[j]);
        } else if (bi.getWidth() > bi.getHeight()) {
            resizedBImage = resizeBufferedImage(bi, Scalr.Method.ULTRA_QUALITY, Scalr.Mode.AUTOMATIC, resolution[j], (int) ((double) resolution[j] * bi.getHeight() / bi.getWidth()));
        } else {
            resizedBImage = resizeBufferedImage(bi, Scalr.Method.ULTRA_QUALITY, Scalr.Mode.AUTOMATIC, (int) ((double) resolution[j] * bi.getWidth() / bi.getHeight()), resolution[j]);
        }
        Image resizedI = (Image) SwingFXUtils.toFXImage(resizedBImage, null);
        ImageIO.write(SwingFXUtils.fromFXImage((Image) SwingFXUtils.toFXImage(resizedBImage, null), null), "png", new File(localModelFotoDir + "/" + i + "/" + resolution[j] + ".png")); // PNG THAT GOES WELL
    }
}

我在Oracle论坛上找到了解决方案。正如广泛讨论的那样,问题出在 alpha 通道需要从源图像中排除,目标是.jpg节省。我还重新排列了我的代码以使其更短。解决方法是:

// Get buffered image:
BufferedImage image = SwingFXUtils.fromFXImage(myJavaFXImage, null); 

// Remove alpha-channel from buffered image:
BufferedImage imageRGB = new BufferedImage(
    image.getWidth(), 
    image.getHeight(), 
    BufferedImage.OPAQUE); 

Graphics2D graphics = imageRGB.createGraphics();

graphics.drawImage(image, 0, 0, null);

ImageIO.write(imageRGB, "jpg", new File("/mydir/foto.jpg"));

graphics.dispose();

Java 8 中已修复:https://bugs.openjdk.java.net/browse/JDK-8114609

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

在 JavaFX 中保存为 jpg 的图像是粉红色的 的相关文章

  • Hibernate + SQLite 不创建数据库

    这是我的问题 我有一个使用 JavaFX Hibernate SQLite 的桌面应用程序 这是我的模型 Entity Table name usuario public class Usuario implements AbstractM
  • 除了标准/渐进之外,第三种JPEG压缩:按通道加载?

    这个问题可能是一个 开放式问题 你们中的许多人可能渴望结束它 但请不要这样做 让我解释 众所周知 JPEG有两种压缩方式 至少在Photoshop保存对话框中 优化 图像加载有点像逐行加载 渐进式 图像首先像马赛克一样加载 逐渐更好 直到原
  • WPF 中图像的淡入淡出

    当我更改幻灯片放映等图像源时 如何实现淡入和淡出图像 我的图像从本地和网络加载 并且其数量是可变的 谢谢 您可以编写一个扩展方法 通过动画显示图像来淡出图像Opacity属性设置为 0 然后设置Source属性并最终将不透明度动画回到 1
  • 考虑到我的图像链接存储在MySQL数据库中,如何通过php显示存储在文件夹中的图像

    作为良好的做法 我只将图像链接存储在数据库中 问题是 我应该如何存储图像的链接 假设它在 c 上 c image jpg 我应该使用哪段 PHP 代码来显示该图像 我只显示路径 我该怎么做才能显示图像 我可以用这个吗 query SELEC
  • HTML/CSS - 使用图像作为输入类型=文件

    如何使用此图像 http h899310 devhost se proxy newProxy uplfile png http h899310 devhost se proxy newProxy uplfile png 而不是常规的
  • 无法使用 SLComposeViewController 将图像发布到 Facebook?

    我想将图像发布到 Facebook 和 Twitter 我对 twitter 很满意 但对使用 SLComposeViewController 类的 facebook 不太满意 无需添加图像 我就可以将文本和网址发布到 Facebook 中
  • Apache-FOP - 减少嵌入到 PDF 中的图像大小

    我有很多 JPG 图像 应该嵌入到生成的 PDF 中 它们的分辨率相当大 每个大约 5 10MB 我想将它们作为预览嵌入到 PDF 中 并且我正在使用适合比例的 XSL FO 属性 图像在正确调整大小的 PDF 中显示 但生成的 PDF 的
  • 单击保存文件

    我希望能够通过单击下载 csv 文件 而不是在浏览器中打开 我把这段代码 a href file csv download file a 但单击它会在浏览器中打开 v 文件 在本地主机中 当我单击链接时 它正在下载 但在服务器上时 它在浏览
  • 将base64图像转换为Node Js中的文件

    我是 Node Js 新手 我需要包含用户的个人资料图片 我从 IOS 应用程序收到 Base64 图像的请求 我需要将其存储在 images 文件夹中并将图像路径保存在 mongodb 数据库中 我使用了以下代码 var bitmap n
  • 为什么这个基本的 imagejpeg() resizer 返回黑色图像?

    EDIT 感谢您的所有回答 特别是 Mailerdaimon 他注意到我没有在imagecopyresampled功能 我不再得到黑色图像 但我仍然得到一些黑色部分 所以我认为我的比例公式应该更新 如果我上传横向图像 新图像的高度小于 17
  • JFrame 图标在 Ubuntu 12.04 中不显示

    我使用一些图像图标开发了一个 Swing 应用程序 应用程序 jar 文件在 Windows 中按预期工作 但相同的 jar 文件在 Ubuntu 12 04 操作系统上不显示框架的图像图标 我的示例代码 ImageIcon ImageIc
  • 如何从表列javafx中删除行

    这些是我的表格列 Course and 描述 如果单击一行 该行变为 活动 突出显示 并且他们按下Delete按钮它应该删除该行 我该怎么做 我的代码Course列 以及我要添加什么事件侦听器到我的delete按钮 SuppressWarn
  • 将base64字符串转换为图像c#时出错

    我想在我的网页上显示图像 并单击应该下载的链接按钮 存储的图像文件以二进制格式存储在db中 将 base64 字符串转换为图像时显示错误 详细信息如下 帮助我找到合适的解决方案 谢谢 Error Code protected void Pa
  • JavaFX 中的 MVC 模式与场景生成器

    我是 JavaFX 新手 根据我当前的设置 正在努力创建合适的 MVC 架构 我使用 Scene Builder 单击了一个 UI 并指定了一个 Controller 类 Startup public class Portal extend
  • 保存数据的最佳方法

    我创建了一个课程 我想在其中跟踪学生的统计数据 我打算稍后制作一个 GUI 来操作这些数据 我的主要问题是 保存和稍后检索这些数据的最佳方法是什么 我读过有关 pickle 和 JSON 的内容 但我并不真正了解它们是如何工作的 特别是它们
  • 代码如何从 Android Gallery 加载图像

    我有用于从图库加载图像的代码 但我真的不明白它是如何工作的 这是代码 Override protected void onActivityResult int requestCode int resultCode Intent data s
  • Google AJAX API - 如何获得 4 个以上结果?

    我使用下面的 google API ajax 来获取特定搜索词的图像 这是在一个WinForms app 下面的链接似乎有效 但它只返回 4 个结果 通过 JSON 有谁知道如何哄得更多吗 显然必须有另一个参数来请求更多或分页结果 但我似乎
  • Python:将 xml 文件转换为图像

    我希望使用 python 脚本将 xml 文件转换为图像 最好是 png 文件 我没有从我的在线研究中找到太多信息 我正在尝试使用 PIL 从这个帖子 https stackoverflow com questions 5741803 co
  • Caffe 多输入图像

    我正在考虑实现一个 Caffe CNN 它接受两个输入图像和一个标签 后来可能是其他数据 并且想知道是否有人知道 prototxt 文件中执行此操作的正确语法 它只是一个带有额外顶部的 IMAGE DATA 层吗 或者我应该为每个层使用单独
  • 如何使用 Keras ImageDataGenerator 预测单个图像?

    我已经训练 CNN 对图像进行 3 类分类 在训练模型时 我使用 keras 的 ImageDataGenerator 类对图像应用预处理功能并重新缩放它 现在我的网络在测试集上训练得非常准确 但我不知道如何在单图像预测上应用预处理功能 如

随机推荐