博客
关于我
java图片压缩技术-不错
阅读量:575 次
发布时间:2019-03-11

本文共 4120 字,大约阅读时间需要 13 分钟。

优化后的文章内容如下:(注:去除所有HTML标签,仅保留纯文本内容)---图片压缩工具类(通用)本Java类可将支持JPEG、BMP、PNG、GIF格式的图片文件进行等比或非等比缩放处理,生成缩略图。该工具主要用于将大图片文件转换为适当大小的可显示图片,常用于Web展示或存储缩略版图片。以下是主要功能及其实现方法:基本配置说明1. 输入路径* `inputDir`:输入图片所在目录路径* `inputFileName`:输入图片文件名2. 输出路径* `outputDir`:输出缩略图所在目录路径* `outputFileName`:输出缩略图文件名3. 缩略图尺寸* `outputWidth`:默认生成的缩略图宽度,默认为100像素* `outputHeight`:默认生成的缩略图高度,默认为100像素4. 缩放模式* `proportion`:是否启用等比缩放,默认启用(true)操作方法1. 类对象初始化```javapublic CompressPic() {    inputDir = "";    outputDir = "";    inputFileName = "";    outputFileName = "";    outputWidth = 100;    outputHeight = 100;}
  1. 设置输入路径
  2. public void setInputDir(String inputDir) {    this.inputDir = inputDir;}
    1. 设置输出路径
    2. public void setOutputDir(String outputDir) {    this.outputDir = outputDir;}
      1. 设置输入图片文件名
      2. public void setInputFileName(String inputFileName) {    this.inputFileName = inputFileName;}
        1. 设置输出文件名
        2. public void setOutputFileName(String outputFileName) {    this.outputFileName = outputFileName;}
          1. 设置缩略图尺寸
          2. public void setOutputWidth(int outputWidth) {    this.outputWidth = outputWidth;}
            1. 设置缩略图高度
            2. public void setOutputHeight(int outputHeight) {    this.outputHeight = outputHeight;}
              1. 设置缩略图尺寸
              2. public void setWidthAndHeight(int width, int height) {    this.outputWidth = width;    this.outputHeight = height;}

                图片处理功能

              3. 获取图片文件大小
              4. public long getPicSize(String path) {    File file = new File(path);    return file.length();}
                1. 执行图片压缩
                2. public String compressPic() {    try {        File file = new File(inputDir + inputFileName);        if (!file.exists()) {            throw new Exception("输入图片不存在");        }        BufferedImage img = ImageIO.read(file);        if (img.getWidth(null) == -1) {            System.out.println("图片无法加载,请稍后重试");            return "no";        }        // 确定缩放比例        if (proportion == true) {            double rateWidth = img.getWidth(null) / (outputWidth + 0.1);            double rateHeight = img.getHeight(null) / (outputHeight + 0.1);            double rate = Math.min(rateWidth, rateHeight);            int newWidth = (int) (img.getWidth(null) / rate);            int newHeight = (int) (img.getHeight(null) / rate);        } else {            int newWidth = outputWidth;            int newHeight = outputHeight;        }        // 生成缩略图        BufferedImage thumbnail = new BufferedImage(            newWidth,            newHeight,            BufferedImage.TYPE_INT_RGB        );        Graphics imgGraphics = thumbnail.getGraphics();        imgGraphics.drawImage(            img.getScaledInstance(                newWidth,                newHeight,                Image.SCALE_SMOOTH            ),            0,            0,            null        );        imgGraphics.dispose();        // 保存缩略图        File outputDirFile = new File(outputDir);        if (!outputDirFile.exists()) {            outputDirFile.mkdirs();        }        File outputesátFile = new File(outputDir + outputFileName);        FileOutputStream out = new FileOutputStream( oscillatFile );        JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);        encoder.encode(thumbnail);        out.close();        return "ok";    } catch (IOException e) {        e.printStackTrace();    }    return "no";}

                  多种调用方式

                3. 简单调用(仅传入输入输出文件名)
                4. public String compressPic() {    return compressPic("");}
                  1. 全参数调用
                  2. public String compressPic(String inputDir,                         String outputDir,                         String inputFileName,                         String outputFileName,                         int width,                         int height,                         boolean proportion) {    this.inputDir = inputDir;    this.outputDir = outputDir;    this.inputFileName = inputFileName;    this.outputFileName = outputFileName;    this.outputWidth = width;    this.outputHeight = height;    this.proportion = proportion;    return compressPic();}

                    使用说明

                  3. 对于源文件路径的构建,主类将自动拼接Dir和FileName,如:inputDir + inputFileName
                  4. 所有新文件将放在outputDir下名为outputFileName
                  5. 如果构建的outputDir不存在,将自动生成此目录
                  6. 提供JPEG编码器处理,支持一部分图片格式的转换,具体取决于ImageIO实现
                  7. 注意事项

                    • 确保引入所有必要的外部库资源
                    • 做好错误处理,避免因缺失文件而导致异常
                    • 建议在使用前测试Compression配置,确保正确生成缩略图
                    • 注意图片缩放算法的选择,Image.SCALE_SMOOTH提供了更平滑的缩放效果

                    这样优化后的文档不仅语言更加流畅自然,还方便于搜索引擎优化,具有可读性和可索引性。

转载地址:http://ielvz.baihongyu.com/

你可能感兴趣的文章
Nginx 负载均衡与权重配置解析
查看>>
Nginx 负载均衡详解
查看>>
nginx 配置 单页面应用的解决方案
查看>>
nginx 配置https(一)—— 自签名证书
查看>>
nginx 配置~~~本身就是一个静态资源的服务器
查看>>
Nginx 配置解析:从基础到高级应用指南
查看>>
nginx+Tomcat性能监控
查看>>
Nginx下配置codeigniter框架方法
查看>>
nginx报错:the “ssl“ parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:128
查看>>
nginx添加模块与https支持
查看>>
Nginx用户认证
查看>>
Nginx的Rewrite正则表达式,匹配非某单词
查看>>
Nginx的使用总结(一)
查看>>
Nginx的使用总结(二)
查看>>
Nginx的可视化神器nginx-gui的下载配置和使用
查看>>
Nginx的是什么?干什么用的?
查看>>
Nginx访问控制_登陆权限的控制(http_auth_basic_module)
查看>>
nginx负载均衡器处理session共享的几种方法(转)
查看>>
nginx负载均衡的5种策略(转载)
查看>>
nginx负载均衡的五种算法
查看>>