Я работал с BufferedImages, особенно с помощью setRGB. То, что я сделал, это взять точные значения байт RGBA и повторно применить их по изображению, чтобы увидеть, работают ли они, и изображение каким-то образом искалечено. Что я сделал не так?setRGB с BufferedImage обеспечивает неправильную окраску
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
это казалось правильным, что нужно сделать. Однако, когда я печатаю изображение, подраздел теперь выглядит совершенно другим, даже если он не должен был меняться. Любая помощь будет принята с благодарностью! Я также попробовал setRGB, используя новый цвет с значениями rgba, но это также не сработало. Производство
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)]);
также не работает. Я совершенно не знаю!
Я пробовал это, но все, что происходит, - это весь подраздел становится прозрачным. Не знаете, почему –
Вы добавили дополнительную скобку между каждым добавлением? –
Да. Просто попробовал это. –