java 上傳圖片圖片變紅
java 上傳圖片的時候出現圖片變紅的情況
原因:圖片包含了一個Alpha(透明)通道,一共四個通道,jpg不支援Alpha通道,所以導致了這個現象
解決程式碼:
private static final int[] RGB_MASKS = {0xFF0000, 0xFF00, 0xFF};
private static final ColorModel RGB_OPAQUE =
new DirectColorModel(32, RGB_MASKS[0], RGB_MASKS[1], RGB_MASKS[2]);
File uploadedFile = new File(savePath, newFileName);
ByteStreams.copy(file.getInputStream(), new FileOutputStream(uploadedFile));
java.awt.Image i = Toolkit.getDefaultToolkit().createImage(savePath + newFileName);
PixelGrabber pg = new PixelGrabber( i, 0, 0, -1, -1, true);
pg.grabPixels();
int width = pg.getWidth(), height = pg.getHeight();
DataBuffer buffer = new DataBufferInt(( int[])pg.getPixels(), pg.getWidth() * pg.getHeight());
WritableRaster raster = Raster.createPackedRaster( buffer, width, height, width, RGB_MASKS , null );
BufferedImage img = new BufferedImage( RGB_OPAQUE,raster, false, null);