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);


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章