Java图片处理 - 缩放图片

news/2024/7/21 5:09:24 标签: java, 图像处理, 缩放图片

java图片处理-缩放图片">Java图片处理 - 缩放图片

java原生代码实现缩放图片">Java原生代码实现缩放图片

上一章原生代码中执行测试代码:

     public static void main(String[] args) {
         /*这儿填写你存放要缩小图片的文件夹全地址*/
        String src = "C:/test2.jpg" ;
        /*这儿填写你转化后的图片存放的文件夹*/
        String tar = "C:/test2_width_200.jpg";
        /* 根据宽度缩放 */
        ImageUtil.widthCutting(src, tar, 200);
    }

具体实现可以看一下以下代码:

    /* 原始图像的宽度和高度 */
    int width = im.getWidth();
    int height = im.getHeight();
    //计算压缩比例
    float resizeTimes = (float)targetWidth / (float)width;
    BigDecimal bd  =   new  BigDecimal((double)resizeTimes);
    // (1:小数点位数, 4:表示四舍五入,可以选择其他舍值方式,例如去尾等等.
    bd   =  bd.setScale(1 ,4); 
    resizeTimes   =  bd.floatValue();

    /* 调整后的图片的宽度和高度 - 按照压缩比例计算出新的宽度和高度 */
    int toWidth = (int) (width * resizeTimes);
    int toHeight = (int) (height * resizeTimes);

    /* 新生成结果图片 */
    result = new BufferedImage(toWidth, toHeight, BufferedImage.TYPE_INT_RGB);
    result.getGraphics().drawImage( im.getScaledInstance(toWidth, toHeight, java.awt.Image.SCALE_SMOOTH), 0, 0, null);

最核心的是将图片按比例进行缩小,如果你只想缩小50%,那么你就可以直接将resizeTimes设置成0.5f,然后去计算最终宽高。

java调用imagemagick缩放图片">使用im4java调用ImageMagick缩放图片

上面的一堆计算是不是很麻烦,其实有更简单的方式,就是用im4java调用第三方库实现,处理跟方便

测试代码:

public static void main(String[] args) throws Exception {

    String src = "c:/test2.jpg";
    String target = "c:/test2_70_ratio.jpg";

    resizeImage(src, target, "70%");
    System.out.println("完成");
}
java">javadoc">/**
 * 改变图片大小比例
 *javadoctag"> @param path 原文件路径
 *javadoctag"> @param des 目标文件路径
 *javadoctag"> @param ratio 缩放比例
 *javadoctag"> @throws Exception
 */
public static void resizeImage(String path, String des, String ratio) throws Exception {
//        创建目标文件
    createDirectory(des);
    IMOperation op = new IMOperation();
    op.addImage(path);
    op.addRawArgs(ratio);
    op.addImage(des);

    ConvertCmd cmd = (ConvertCmd) getImageCommand("convert");
    cmd.run(op);
}

大家还可以参考我专栏中的其他文章:
(1)Java图片处理 - 安装ImageMagick库使用convert命令
(2)Java图片处理 - 创建工具类
(3)Java图片处理 - 复制
(4)Java图片处理 - 缩放图片
(5)Java图片处理 - gif图获取一帧图片


http://www.niftyadmin.cn/n/1661531.html

相关文章

MySQL查看数据库表容量大小

【https://blog.csdn.net/fdipzone/article/details/80144166】 1.查看所有数据库容量大小 select table_schema as 数据库, sum(table_rows) as 记录数, sum(truncate(data_length/1024/1024, 2)) as 数据容量(MB), sum(truncate(index_length/1024/1024, 2)) as 索引容量(MB…

Java图片处理 - gif图获取一帧图片

Java图片处理 - gif图获取一帧图片 Java原生代码实现gif获取一帧图片 先看测试代码: public static void main(String[] args) {/*这儿填写你存放要缩小图片的文件夹全地址*/String src "c:/5.gif" ;/*这儿填写你转化后的图片存放的文件夹*/String tar…

systemctl管理Tomcat启动、停止、重启、开机启动

systemctl管理Tomcat启动、停止、重启、开机启动 1. 创建服务 用service来管理服务的时候,是在/etc/init.d/目录中创建一个脚本文件,来管理服务的启动和停止,在systemctl中,也类似,文件目录有所不同,在/l…

Tomcat假死超时之Windows Server 2008R2版

为什么80%的码农都做不了架构师?>>> 问题 最近Tomcat服务老是出现连接超时,主要的现象就是在Windows本机使用回环地址访问,都是无法访问状态。查了CPU,内存,网络带宽,TCP连接数,包括…

Struts原理及环境搭建

struts是一个基于MVC的Web开发框架。使用Struts的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间。如果我们想混合使用Servlets和JSP的优点来建立可扩展的应用,struts是一个不错的选择。那么学习struts首先就是要理解它的框架实现原理,以及…

element-ui级联选择器(Cascader)获取级联对象 (主要是想获取:label值)

最近使用element-ui 的Casecader 级联对象时,后台要求将对象的label值也传过去,然而,element-ui 官方并没有提供这样方(keng)便 ( die ) 的方法。 一时间直是束手无策... 无奈只能通过遍历树来一一获取了:…

systemctl管理Redis启动、停止、开机启动

systemctl管理Redis启动、停止、开机启动 1. 创建服务 用service来管理服务的时候,是在/etc/init.d/目录中创建一个脚本文件,来管理服务的启动和停止,在systemctl中,也类似,文件目录有所不同,在/lib/syst…

记一次对 Laravel-permission 项目的性能优化

我最近研究分析了在 SWIS上面创建的项目的性能。令人惊讶的是,最耗费性能的方法之一是优秀的 spatie/laravel-permission 包造成的。 经过查阅更多资料和研究,发现一个可能明显改善的性能问题 。既然解决方案已明确阐述,就很容易编写代码改善…