0

我想深入了解如何在 java 中的内存中表示 png 文件的低级别,以便我可以迭代其像素,更改它们,使用现有的创建修改后的 png 文件等。

我从哪里开始?

4

2 回答 2

4

您可以先将其读入BufferedImagewith ImageIO.read(file)
这些getRGB(...)方法可以帮助您获取有关单个像素的信息,相应的setRGB(...)方法可以帮助您更改它们。

于 2012-09-11T11:53:57.777 回答
2

在 Java 中,内存中图像的表示与文件的格式基本上无关:无论是 PNG、JPEG、GIF 还是其他格式,这些都是将图像编码为(与语言无关的)字节流的标准。但是,当您在内存中处理图像的像素时,您已经对其进行了解码,因此您“忘记了”它来自哪种格式(PNG、JPEG...)。

在 Java 中处理图像的最常见方法是使用 BufferedImage类,该类包含在java.awt.image 中。* 包裹。但这不是必要条件。例如,我研究过一个不使用 BufferedImage 的低级 PNG 编码器/编码器 ( PNGJ ),而是将每个图像行作为一个int[]数组提供给您。

于 2012-09-11T12:39:12.233 回答