【发布时间】:2015-03-09 06:43:40
【问题描述】:
private BufferedImage outputImg;
for(int y = 0; y < inputImg.getHeight(); ++y)
{
for(int x = 0; x < inputImg.getWidth(); ++x)
{
Color originPixel = new Color(inputImg.getRGB(x, y));
double X = 0.412453 * originPixel.getRed() + 0.35758 * originPixel.getGreen() + 0.180423 * originPixel.getBlue();
double Y = 0.212671 * originPixel.getRed() + 0.71516 * originPixel.getGreen() + 0.072169 * originPixel.getBlue();
double Z = 0.019334 * originPixel.getRed() + 0.119193 * originPixel.getGreen() + 0.950227 * originPixel.getBlue();
//???
}
}
在色彩空间转换函数中,我得到 RGB 像素并将其转换为 XYZ 像素。但是如何在outputImg中设置这个结果呢?
在BufferedImage 方法中,我只看到setRGB(int r, int g, int b)
【问题讨论】:
-
你到底想做什么?
-
是的,我有任务:将图像从 RGB 颜色空间转换为另一个颜色空间(例如转换为 XYZ)。使用公式
-
据我所知,BufferedImage 以 RGB 格式存储图像。如果有一个 setXYZ,它所要做的就是转换回 RGB,然后存储 RGB。
-
谢谢,也许可以用不同的方法来存储图像,可以设置色彩空间设置吗?
-
我想我找到了出路:我创建了新的 Color(ColorSpace cspace, float[] components, float alpha) 和 Graphics g。并像单点线一样绘制像素
标签: java set rgb bufferedimage