【发布时间】:2016-02-07 09:23:08
【问题描述】:
我正在使用 BufferedImages,尤其是使用 setRGB。我所做的是获取确切的 RGBA 字节值并将它们重新应用到图像上以查看它们是否有效,并且图像不知何故被肢解了。我做错了什么?
BufferedImage subImg = inputImage.getSubimage(20,20,200,300);
byte[] pixels = ((DataBufferByte) subImg.getRaster().getDataBuffer()).getData();
int pixLength=0;
if(subImg.getAlphaRaster()!=null){
for(int y=0; y<subImg.getHeight(); y++){
for(int x=0; x<subImg.getWidth(); x++){
inputImage.setRGB(20+x, 20+y,pixels[pixLength+3]<<24 + pixels[pixLength+2]<<16 + pixels[pixLength+1]<<8+pixels[pixLength]);
pixLength+=4;
}
}
}
根据这篇文章:Java - get pixel array from image
这似乎是正确的做法。但是,当我打印图像时,该小节现在看起来完全不同,即使它不应该改变。任何帮助将不胜感激!我还尝试使用具有 rgba 值的新颜色 setRGB,但这也不起作用。正在做
inputImage.setRGB(20+x, 20+y,((int)pixels[pixLength+3]&0xff)<<24 + ((int)pixels[pixLength+2]&0xff)<<16 + ((int)pixels[pixLength+1]&0xff)<<8+((int)pixels[pixLength]&0xff)]);
也不行。我真是一头雾水!
【问题讨论】:
标签: java opencv byte bytearray bufferedimage