java - 在 BufferedImage 上获取和设置 RGB 值

标签 java bufferedimage argb

我在 Java 中处理 RGB 值时遇到了非常糟糕的时间,这让我开始尝试对此进行小实验。

我归结为:加载图像,获取它的 rgb 值并创建具有相同值的新图像。不幸的是,根据以下代码,这不起作用(图像显示不同,请参见图片)...有人能看出哪里出了问题吗?

BufferedImage oriImage=ImageIO.read(new  URL("http://upload.wikimedia.org/wikipedia/en/2/24/Lenna.png"));

int[] oriImageAsIntArray = new int[oriImage.getWidth()*oriImage.getHeight()];
oriImage.getRGB(0, 0, oriImage.getWidth(),oriImage.getHeight(), oriImageAsIntArray, 0, 1);

BufferedImage bfImage= new BufferedImage(oriImage.getWidth(),oriImage.getHeight(),
            BufferedImage.TYPE_INT_ARGB);

bfImage.setRGB(0,0,bfImage.getWidth(),bfImage.getHeight(),oriImageAsIntArray, 0, 1);

output

最佳答案

显然,getRGBsetRGB 没有被正确使用。

我将代码更改为:

oriImage.getRGB(0, 0, oriImage.getWidth(),oriImage.getHeight(), oriImageAsIntArray, 0,  oriImage.getWidth());
(...)
bfImage.setRGB(0,0,bfImage.getWidth(),bfImage.getHeight(),oriImageAsIntArray, 0, bfImage.getWidth());

... 并且图片显示正确。我仍然不明白最后一个参数是什么。在 JavaDoc 中,它被描述为:

scansize - scanline stride for the rgbArray

关于java - 在 BufferedImage 上获取和设置 RGB 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22118268/

相关文章:

delphi - 如何将 ARGB 值从字符串转换为颜色?

css - 除了 'opacity' 之外,RGB 和 RGBA 之间有什么区别

transparency - 如何创建位深度为 32 的窗口

java - Java中如何从一行中获取字符串?

java - ImageJ 与 BufferedImage 的兼容性

java - 调整图像大小而不损失质量

Java - 红、绿、蓝获取RGB

java - 如何处理您知道其中只有一条记录的 ResultSet

java - 算法复杂度 : Is it the same to iterate an array from the start than from the end?

java - jsf java询问jsf中的时间