我想讀取,重新縮放和保存圖像在一個Servlet。這是相關代碼:閱讀JPEG:ImageIO.read()弄亂顏色空間
BufferedImage image = ImageIO.read(file);
BufferedImage after = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
AffineTransform at = AffineTransform.getScaleInstance(factor, factor);
AffineTransformOp scaleOp = new AffineTransformOp(at, AffineTransformOp.TYPE_BILINEAR);
after = scaleOp.filter(image, null);
ImageIO.write(after, "JPG", file));
原始文件是一個普通的RGB-JPEG,但是當我打開和保存文件弄出來的CMYK-JPEG。即使我不重新調整圖像,只是打開和關閉圖像導致問題發生這種情況。
當我打開PNG或GIF時,一切都很好。有人知道該怎麼做嗎?我希望ImageIO的read-Method保留原來的色彩空間。
如果還有另一種方式閱讀jpeg的舒適方式?
感謝您的任何建議!
創建'after'和然後用'scaleOp.filter'覆蓋它。它是否正確?所以即使你認爲它是'RGB'圖像可能不是RGB?如果你希望'後'是RGB,那麼在你進行變換之前,你可能需要'將'圖像'繪製'到*之後。 –
這是一個很好的提示:過濾器方法返回一個全新的BufferedImage。所以現在我知道,圖像在讀取時不會被「着色」,而是在我的轉換之後。我嘗試使用'graphics.drawImage(image,scaleOp,0,0)'將原始圖像繪製到目標圖像上,現在它可以正確轉換。謝謝你的幫助! –
很高興它的工作!我將添加一個答案,以便qn可以關閉。 –