相关疑难解决方法(0)

使用BufferedImages获取图像的每个像素的颜色

我试图获得图像每个像素的每种颜色.我的想法如下:

int[] pixels;
BufferedImage image;

image = ImageIO.read(this.getClass.getResources("image.png");
int[] pixels = ((DataBufferInt)image.getRaster().getDataBuffer()).getData();
Run Code Online (Sandbox Code Playgroud)

是对的吗?我甚至无法检查"像素"数组包含什么,因为我得到以下错误:

java.awt.image.DataBufferByte cannot be cast to java.awt.image.DataBufferInt
Run Code Online (Sandbox Code Playgroud)

我只是希望得到阵列中每个像素的颜色,我该如何实现呢?

java image pixel colors

14
推荐指数
4
解决办法
6万
查看次数

我可以告诉BufferedImage最初的文件类型是什么吗?

在我的代码中,我有一个像ImageIO类一样加载的BufferedImage,如下所示:

BufferedImage image = ImageIO.read(new File (filePath);
Run Code Online (Sandbox Code Playgroud)

后来,我想将它保存为一个字节数组,但ImageIO.write方法需要我来接的GIF,PNG,或JPG格式来写我的图像(如本教程中介绍这里).

我想选择与原始图像相同的文件类型.如果图像最初是GIF,我不希望将其保存为PNG的额外开销.但如果图像最初是PNG,我不想失去半透明性,并将其保存为JPG或GIF.有没有办法可以从BufferedImage中确定原始文件格式是什么?

我知道我可以简单地解析文件路径,当我加载图像以找到扩展名并将其保存以供日后使用时,但理想情况下我喜欢直接从BufferedImage执行此操作.

java bufferedimage image javax.imageio

7
推荐指数
2
解决办法
1万
查看次数

标签 统计

image ×2

java ×2

bufferedimage ×1

colors ×1

javax.imageio ×1

pixel ×1