【问题标题】:Converting Pixel Array to Image in Java在 Java 中将像素数组转换为图像
【发布时间】:2013-08-01 21:31:42
【问题描述】:

我使用this code 将图像转换为像素数组。

  • convertTo2DWithoutUsingGetRGB 方法将图像读取到像素数组
  • 像素数组到图像的writeToFile方法

现在我想将像素数组转换为 Image。但是当我转换它时,我会丢失图像数据。

  1. 初始图片大小:80Kb JPG
  2. 复制图片大小:71Kb JPG

我可以清楚地注意到两个图像之间的一些差异,Java 生成的图像有某种白噪声。

我想在不丢失单个像素数据的情况下重现图像,我如何在Java中实现?

【问题讨论】:

  • 也许你没有好好搜索。在本网站本身,您可以找到解决方案:question1question2
  • @blackSmith,谢谢 :)

标签: java arrays image-processing colors


【解决方案1】:

jpg 文件格式使用有损压缩算法,这意味着它生成的文件将与原始文件略有不同。您可以更改质量设置以或多或少地压缩,但您无法在不进行任何修改的情况下保存原始大小。

这就是为什么不建议将 jpg 用于图像编辑的原因。请改用无损格式,例如 PNG。

【讨论】:

  • 看起来有点不同。因为原图是JPG,为什么不能复制同一张图?就像我们无法使用 Java 复制原始图像一样。
  • 不是java,是jpg文件格式。没有图像编辑软件可以满足您的要求。如果你想要一个精确的副本,你可以使用 Files.copy
  • 可能是真的。但是,如果我只想旋转图像并复制原始图像的副本?还是其他一些图像操作?
  • 这可以在没有损失的情况下完成,但它需要特别了解文件格式在内部如何工作以及对数据进行混洗,而不是通过将图像读取为像素。我认为标准的libjpeg C库可以做这些操作,你可以使用jna或jni从java调用它的函数
  • 但不是来自 Java?我尝试使用 PNG 格式文件,它正在旋转并且工作正常。不过,为什么不使用 JPG 或其他文件格式而不丢失数据呢?
猜你喜欢
  • 2011-08-16
  • 1970-01-01
  • 2022-01-03
  • 1970-01-01
  • 2015-01-17
  • 1970-01-01
  • 1970-01-01
  • 2010-09-21
  • 2013-02-10
相关资源
最近更新 更多