加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

图像压缩、生成缩略图Java类

发布时间:2020-12-15 00:12:11 所属栏目:Java 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 import java.awt.Graphics2D; import java.awt.Image; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream;

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

    import java.awt.Graphics2D;  
    import java.awt.Image;  
    import java.awt.image.BufferedImage;  
    import java.io.File;  
    import java.io.FileInputStream;  
    import java.io.FileNotFoundException;  
    import java.io.IOException;  
      
    import javax.imageio.ImageIO;  
        
    /**  
     * * @author WQ * @date 2011-01-14 * @versions 1.0 图片压缩工具类 提供的方法中可以设定生成的  
     * 缩略图片的大小尺寸等  
     */    
    public class ImageUtil {    
        /** * 图片文件读取 * * @param srcImgPath * @return */    
        private static BufferedImage InputImage(String srcImgPath) {    
            BufferedImage srcImage = null;    
            try {    
                FileInputStream in = new FileInputStream(srcImgPath);    
                srcImage = javax.imageio.ImageIO.read(in);    
            } catch (IOException e) {    
                System.out.println("读取图片文件出错!" + e.getMessage());    
                e.printStackTrace();    
            }    
            return srcImage;    
        }    
        
        /**  
         * * 将图片按照指定的图片尺寸压缩 * * @param srcImgPath :源图片路径 * @param outImgPath *  
         * :输出的压缩图片的路径 * @param new_w * :压缩后的图片宽 * @param new_h * :压缩后的图片高  
         */    
        public static void compressImage(String srcImgPath,String outImgPath,int new_w,int new_h) {    
            BufferedImage src = InputImage(srcImgPath);    
            disposeImage(src,outImgPath,new_w,new_h);    
        }    
        
        /**  
         * * 指定长或者宽的最大值来压缩图片 * * @param srcImgPath * :源图片路径 * @param outImgPath *  
         * :输出的压缩图片的路径 * @param maxLength * :长或者宽的最大值  
         */    
        public static void compressImage(String srcImgPath,int maxLength) {    
            // 得到图片    
            BufferedImage src = InputImage(srcImgPath);    
            if (null != src) {    
                int old_w = src.getWidth();    
                // 得到源图宽    
                int old_h = src.getHeight();    
                // 得到源图长    
                int new_w = 0;    
                // 新图的宽    
                int new_h = 0;    
                // 新图的长    
                // 根据图片尺寸压缩比得到新图的尺寸    
                if (old_w > old_h) {    
                    // 图片要缩放的比例    
                    new_w = maxLength;    
                    new_h = (int) Math.round(old_h * ((float) maxLength / old_w));    
                } else {    
                    new_w = (int) Math.round(old_w * ((float) maxLength / old_h));    
                    new_h = maxLength;    
                }    
                disposeImage(src,new_h);    
            }    
        }    
        
        /** * 处理图片 * * @param src * @param outImgPath * @param new_w * @param new_h */    
        private synchronized static void disposeImage(BufferedImage src,int new_h) {    
            // 得到图片    
            int old_w = src.getWidth();    
            // 得到源图宽    
            int old_h = src.getHeight();    
            // 得到源图长    
            BufferedImage newImg = null;    
            // 判断输入图片的类型    
            switch (src.getType()) {    
            case 13:    
                // png,gifnewImg = new BufferedImage(new_w,new_h,// BufferedImage.TYPE_4BYTE_ABGR);    
                break;    
            default:    
                newImg = new BufferedImage(new_w,BufferedImage.TYPE_INT_RGB);    
                break;    
            }    
            Graphics2D g = newImg.createGraphics();    
            // 从原图上取颜色绘制新图    
            g.drawImage(src,old_w,old_h,null);    
            g.dispose();    
            // 根据图片尺寸压缩比得到新图的尺寸    
            newImg.getGraphics().drawImage(    
                    src.getScaledInstance(new_w,Image.SCALE_SMOOTH),null);    
            // 调用方法输出图片文件    
            OutImage(outImgPath,newImg);    
        }    
        
        /**  
         * * 将图片文件输出到指定的路径,并可设定压缩质量 * * @param outImgPath * @param newImg * @param  
         * per  
         */    
        private static void OutImage(String outImgPath,BufferedImage newImg) {    
            // 判断输出的文件夹路径是否存在,不存在则创建    
            File file = new File(outImgPath);    
            if (!file.getParentFile().exists()) {    
                file.getParentFile().mkdirs();    
            }// 输出到文件流    
            try {    
                ImageIO.write(newImg,outImgPath.substring(outImgPath    
                        .lastIndexOf(".") + 1),new File(outImgPath));    
            } catch (FileNotFoundException e) {    
                e.printStackTrace();    
            } catch (IOException e) {    
                e.printStackTrace();    
            }    
        }    
        public static void main(String args[]){  
            long st = System.currentTimeMillis();  
            // ImageUtil.compressImage("c:/test1.jpg","c:/test2.jpg",558,273);  
            ImageUtil.compressImage("c:/test.jpg","c:/test3.jpg",558);  
            System.out.println(System.currentTimeMillis()-st);  
        }  
    }  

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读