Java图片处理 - 缩放图片

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chwshuang/article/details/64923333

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,然后去计算最终宽高。

使用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("完成");
}
/**
 * 改变图片大小比例
 * @param path 原文件路径
 * @param des 目标文件路径
 * @param ratio 缩放比例
 * @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图获取一帧图片

猜你喜欢

转载自blog.csdn.net/chwshuang/article/details/64923333