zoukankan      html  css  js  c++  java
  • 图片压缩成指定大小

    不用截取图片,按指定大小截取。

    package com.boco.vnms.common.util;

    import java.awt.Color; 
    import java.awt.Graphics2D; 
    import java.awt.Image; 
    import java.awt.image.BufferedImage; 
    import java.awt.image.ConvolveOp; 
    import java.awt.image.Kernel; 
    import java.io.File; 
    import java.io.FileOutputStream; 
    import java.io.InputStream; 
    import org.apache.commons.fileupload.FileItem; 
    import org.apache.log4j.Logger;     
    import com.sun.image.codec.jpeg.JPEGCodec; 
    import com.sun.image.codec.jpeg.JPEGImageEncoder; 

    public class ImageUtil { 
        /** 
         * Logger for this class 
         */
        private static final Logger logger = Logger.getLogger(ImageUtil.class);     
        public static void imageScale(String srcFilePath, String targetFilePath, 
                int width, int height) { 
             imageScale(new File(srcFilePath), new File(targetFilePath), width, 
                    height); 
        } 
        public static void imageScale(File srcFile, File targetFile, int width, int height) { 
            try { 
                Image image = javax.imageio.ImageIO.read(srcFile); 
                image = image.getScaledInstance(width, height, 
                        Image.SCALE_AREA_AVERAGING); 
                // Make a BufferedImage from the Image. 
                BufferedImage mBufferedImage = new BufferedImage(width, height, 
                        BufferedImage.TYPE_INT_RGB); 
                Graphics2D g2 = mBufferedImage.createGraphics();             
                g2.drawImage(image, 0, 0, width, height, Color.white, null); 
                g2.dispose(); 
                float[] kernelData2 = { -0.125f, -0.125f, -0.125f, -0.125f, 2, 
                        -0.125f, -0.125f, -0.125f, -0.125f }; 
                Kernel kernel = new Kernel(3, 3, kernelData2); 
               ConvolveOp cOp = new ConvolveOp(kernel, ConvolveOp.EDGE_NO_OP, null); 
                mBufferedImage = cOp.filter(mBufferedImage, null); 
      
               File targetDir = targetFile.getParentFile(); 
                if (!targetDir.exists()) 
                    targetDir.mkdirs(); 
     
                FileOutputStream out = new FileOutputStream(targetFile); 
                JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); 
                encoder.encode(mBufferedImage); 
                out.close(); 
            } catch (Exception e) { 
               logger.error( 
                        "imageScale(String, String, int, int) - 图片压缩出错 - srcFilePath="
                                + srcFile.getPath() + ", targeFilePath="
                               + targetFile.getPath() + ", width=" + width 
                               + ", height=" + height, e); 
            } 
        } 
      
       public void imageScale(FileItem fileItem, String targetFilePath, int width, 
                int height) { 
            try { 
                InputStream input = fileItem.getInputStream(); 
                Image image = javax.imageio.ImageIO.read(input); 
      
                image = image.getScaledInstance(width, height, 
                        Image.SCALE_AREA_AVERAGING); 
                BufferedImage mBufferedImage = new BufferedImage(width, height, 
                        BufferedImage.TYPE_INT_RGB); 
                Graphics2D g2 = mBufferedImage.createGraphics(); 
      
                g2.drawImage(image, 0, 0, width, height, Color.white, null); 
                g2.dispose(); 
      
                float[] kernelData2 = { -0.125f, -0.125f, -0.125f, -0.125f, 2, 
                        -0.125f, -0.125f, -0.125f, -0.125f }; 
                Kernel kernel = new Kernel(3, 3, kernelData2); 
                ConvolveOp cOp = new ConvolveOp(kernel, ConvolveOp.EDGE_NO_OP, null); 
                mBufferedImage = cOp.filter(mBufferedImage, null); 
      
                File target = new File(targetFilePath); 
                File targetDir = target.getParentFile(); 
                if (!targetDir.exists()) 
                    targetDir.mkdirs(); 
      
                FileOutputStream out = new FileOutputStream(targetFilePath); 
                JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); 
                encoder.encode(mBufferedImage); 
                out.close(); 
                input.close(); 
            } catch (Exception e) { 
                logger.error( 
                        "imageScale(String, String, int, int) - 图片压缩出错 - fileItem="
                               + fileItem.getName() + ", targetFilePath="
                          + targetFilePath + ", width=" + width + ", height="
                         + height, e); 
       } 
      } 

    public static void main(String[] args) {
       imageScale("D:/xx.jpg", "D:/xx.jpg",200, 100);
    }
    }

  • 相关阅读:
    F. Beautiful Rectangle 构造
    D. Game with modulo 交互题
    2020牛客暑期多校训练营(第六场) Josephus Transform
    2020牛客暑期多校训练营(第五场) D Drop Voicing
    2020 Multi-University Training Contest 2 In Search of Gold
    ABP 仅配置权限
    Oracle 驱动安装
    电商 Python html格式访客数据转为excel格式的数据 html格式的excel转换为excel
    SQL Server 外键 使用与否
    SQL Server 字段类型 datetime2(7)
  • 原文地址:https://www.cnblogs.com/rmsSpring/p/imageCut.html
Copyright © 2011-2022 走看看