相关疑难解决方法(0)

Java - 从图像中获取像素数组

我正在寻找int[][]从a 获取像素数据(在表单中)的最快方法BufferedImage.我的目标是能够(x, y)使用图像来处理图像中的像素int[x][y].我发现的所有方法都没有这样做(大多数都返回int[]s).

java bufferedimage javax.imageio

111
推荐指数
4
解决办法
21万
查看次数

某些图像文件类型是否始终与某些BufferedImage常量类型相对应?

Java中的BufferedImage类包含一个getType()方法,该方法返回与BufferedImage常量类型变量相关的整数,该变量描述有关如何编码图像的一些信息(您可以查看BufferedImage源以确定哪个数字对应于常量类型变量).例如,如果它返回与之对应的整数BufferedImage.TYPE_3BYTE_BGR,则表示BufferedImage是8位RGB图像,没有alpha,蓝色,绿色和黄色各自用3位表示.

其中一些图像类型似乎与特定格式的某些属性相关.例如,TYPE_BYTE_INDEXED它表示它是由"256色6/6/6颜色立方体调色板"创建的.这听起来很像GIF图像,它是由256种颜色创建的.

好奇,我在硬盘上扫描了几百张照片ImageIO.read(File file),然后将BufferedImage.getType()它们转换为BufferedImage ,然后调用它们.我确定只有少数BufferedImage类型是从某些图像类型生成的.结果如下:

JPG: TYPE_3BYTE_BGR,TYPE_BYTE_GRAY

PNG: TYPE_3BYTE_BGR,TYPE_BYTE_GRAY,TYPE_4BYTE_BGRA

GIF: TYPE_BYTE_INDEXED

虽然看起来JPG和PNG共享一些类似的BufferedImage常量类型,但在我的测试中只有一个PNG导致了一个TYPE_4BYTE_BGRA并且每个GIF都产生了一个TYPE_BYTE_INDEXED.

我对图像格式不太熟悉,而且我的样本量并不是那么大.所以我想我会问:假设图像格式正确,某些图像类型是否总是导致具有某些常量类型的BufferedImages?为了提供一个具体的例子,正确格式化的GIF图像是否总是对应​​于TYPE_BYTE_INDEXED?或者所有格式正确的图像是否可以与所有BufferedImage常量类型相对应?

java bufferedimage image

4
推荐指数
1
解决办法
1054
查看次数

标签 统计

bufferedimage ×2

java ×2

image ×1

javax.imageio ×1