您的位置:首页 > 编程语言 > Java开发

java 上传图片图片变红

2015-11-25 17:28 423 查看

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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: