Dar*_*ght 5 java bufferedimage dpi
我目前正在研究一个用例,需要确定上传的图像是灰度还是RGB。我发现了几种识别方法,但不确定它们是否可靠,是否可以共同用于确认图像是否为灰度。
第1部分:读取图像并使用Raster获取NumberDataElements。
BufferedImage image = ImageIO.read(file);
Raster ras = image.getRaster();
int elem = ras.getNumDataElements();
Run Code Online (Sandbox Code Playgroud)
我观察到elem的值在某些情况下为“ 1”,但并非全部。
第2部分:检查每个像素的RGB值。如果R,G,B值与给定像素相同。
BufferedImage image = ImageIO.read(file);
Raster ras = image.getRaster();
//Number of Color elements
int elem = ras.getNumDataElements();
int width = image.getWidth();
int height = image.getHeight();
int pixel,red, green, blue;
for (int i = 0; i < width; i++)
for (int j = 0; j < height; j++) {
//scan through each pixel
pixel = image.getRGB(i, j);
red = (pixel >> 16) & 0xff;
green = (pixel >> 8) & 0xff;
blue = (pixel) & 0xff;
//check if R=G=B
if (red != green || green != blue ) {
flag = true;
break;
}
}
Run Code Online (Sandbox Code Playgroud)
在这里,我检查任何给定像素的R,G,B值是否相同,并且此行为在所有像素上均一致。
我正在使用这两种方法,但不确定它们的准确性。请提示..
以下方法对我有用。谢谢大家的帮助。
BufferedImage image = ImageIO.read(file);
Raster ras = image.getRaster();
//Number of Color elements
int elem = ras.getNumDataElements();
int width = image.getWidth();
int height = image.getHeight();
int pixel,red, green, blue;
for (int i = 0; i < width; i++)
for (int j = 0; j < height; j++) {
//scan through each pixel
pixel = image.getRGB(i, j);
red = (pixel >> 16) & 0xff;
green = (pixel >> 8) & 0xff;
blue = (pixel) & 0xff;
//check if R=G=B
if (red != green || green != blue ) {
flag = true;
break;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2916 次 |
| 最近记录: |