java图片压缩
2018-07-20 来源:open-open
/** * 改变图片的大小到宽为size,然后高随着宽等比例变化 * @param is 上传的图片的输入流 * @param os 改变了图片的大小后,把图片的流输出到目标OutputStream * @param size 新图片的宽 * @param format 新图片的格式 * @throws IOException */ public static void resizeImage1(InputStream is, OutputStream os, int size, String format) { try { BufferedImage prevImage = ImageIO.read(is); double width = prevImage.getWidth(); double height = prevImage.getHeight(); double percent = size/width; int newWidth = (int)(width * percent); int newHeight = (int)(height * percent); BufferedImage image = new BufferedImage(newWidth, newHeight, BufferedImage.TYPE_INT_BGR); //以下代码在压缩图片透明背景会变成变黑色 /* Graphics graphics = image.createGraphics(); graphics.drawImage(prevImage, 0, 0, newWidth, newHeight, null); ImageIO.write(image, format, os);*/ ///////////////////////////////////////// //以下代码解决在压缩png格式的图片透明背景会变成变黑色的问题 Graphics2D g2d = image.createGraphics(); image = g2d.getDeviceConfiguration().createCompatibleImage(newWidth,newHeight,Transparency.TRANSLUCENT); g2d.dispose(); g2d = image.createGraphics(); Image from = prevImage.getScaledInstance(newWidth, newHeight, prevImage.SCALE_AREA_AVERAGING); g2d.drawImage(from, 0, 0, null); g2d.dispose(); ImageIO.write(image, format,os); os.flush(); is.close(); os.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。
最新资讯
热门推荐