【问题标题】:Accuracy of BufferedImage.getRGB()BufferedImage.getRGB() 的准确性
【发布时间】:2014-07-07 07:46:00
【问题描述】:

我编写了一个程序,可以从 jpg 文件中读取 rgb 值,但是当我用纯色测试它时,我得到的 rgb 结果有点不准确。有谁知道是我的代码还是它的 java 不准确?

RGB

red=64 green=0 blue=128

结果

red=65 green=0 blue=128

代码

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


【解决方案1】:

代码似乎正确,结果也一样,Paint 说图像也是 (65,0,128)

【讨论】:

    猜你喜欢
    • 2013-11-08
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 2021-05-10
    • 2016-06-03
    • 2019-10-09
    • 2020-06-18
    • 1970-01-01
    相关资源
    最近更新 更多