【发布时间】:2014-07-07 07:46:00
【问题描述】:
我编写了一个程序,可以从 jpg 文件中读取 rgb 值,但是当我用纯色测试它时,我得到的 rgb 结果有点不准确。有谁知道是我的代码还是它的 java 不准确?
RGB
结果
代码
import java.awt.*;
import java.awt.image.*;
import java.io.*;
import java.util.ArrayList;
import javax.imageio.*;
public class Program {
public int[][] rgbValues;
public File imagePath = new File("src/image3.jpg");
public BufferedImage image;
public Program() throws IOException{
image = ImageIO.read(imagePath);
rgbValues = new int[image.getWidth()][image.getHeight()];
}
public void run() throws IOException{
getData();
analyzeData();
}
private void getData() throws IOException{
for (int y = 0; y < image.getHeight(); y++){
for (int x = 0; x < image.getWidth(); x++){
rgbValues[y][x] = image.getRGB(x, y);
}
}
}
private void analyzeData() throws IOException{
boolean f = image.getAlphaRaster() != null;
Color color = new Color(rgbValues[10][10], f);
System.out.println(color.getRed());
System.out.println(color.getGreen());
System.out.println(color.getBlue());
}
}
【问题讨论】:
-
IrfanView 和 GIMP 同意您链接的图像中的颜色确实是 (65, 0, 128)。
-
这很奇怪。也许 jpeg 压缩会与 rbg 混淆。
-
也许可以提供更多关于您如何创建和存储图像的信息......?!
-
我使用 ms paint 并通过输入 rgb 值来选择颜色。我将其保存为 jpg 文件。
-
我认为这是由于 jpg 压缩。
标签: java image-processing rgb bufferedimage