ImageMagick安装使用

下载ImageMagick   

http://www.imagemagick.org/script/download.php  找到自己对应的系统版本下载并安装


import com.sun.image.codec.jpeg.ImageFormatException;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import org.apache.log4j.Logger;
import org.im4java.core.ConvertCmd;
import org.im4java.core.IMOperation;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
public class ImageUtil {
    private static final Logger logger = Logger.getLogger(ImageUtil.class);

    public static final int IMG_H = 800; // 图片像素高, 默认800
    public static final int IMG_W = 800; // 图片像素宽,默认800
    public static final float PER = 1; // 压缩质量,默认1(范围0-1)

    /**
     * 扩大或压缩图片,留白处理 默认到800x800 压缩质量默认为1
     *
     * @param inputFile
     * @param outputFile
     */
    public void compressPic(File inputFile, File outputFile) throws Exception {
        IMOperation op = new IMOperation();
        op.addImage(inputFile.getPath());
        op.addRawArgs("-resize", IMG_W + "x" + IMG_H);
        op.addRawArgs("-background", "white");
        op.addRawArgs("-gravity", "center");
        op.addRawArgs("-extent",  IMG_W + "x" + IMG_H + "!");// + "!"
        op.addImage(outputFile.getPath());
        ConvertCmd convert = new ConvertCmd();
        //linux下不要设置此值,不然会报错 windows 填写ImageMagick安装目录
        convert.setSearchPath("C:\\Program Files (x86)\\ImageMagick-6.3.9-Q16");
        convert.run(op);
        LogEnum.SERVICE.error("--compressPic上传完成!");
    }

    public void compressPicError(File inputFile, File outputFile) throws Exception{
        IMOperation op = new IMOperation();
        op.addImage(inputFile.getPath());
        op.addRawArgs("-resize", IMG_W + "x" + IMG_H);
        op.addRawArgs("-background", "white");
        op.addRawArgs("-gravity", "center");
        op.addRawArgs("-extent",  IMG_W + "x" + IMG_H + "!");// + "!"
        op.addImage(outputFile.getPath());
        ConvertCmd convert = new ConvertCmd();
        // linux下不要设置此值,不然会报错
//        convert.setSearchPath(imageMagickPath);
        convert.run(op);
        LogEnum.SERVICE.error("compressPicError上传完成!");
    }



    /**
     * 扩大或压缩图片,留白处理 默认到800x800 压缩质量默认为1
     *
     * @param inputFile
     * @param outputFile
     */
    public void compressPic(File inputFile, File outputFile,int IMG_H,int IMG_W) throws Exception {
        IMOperation op = new IMOperation();
        op.addImage(inputFile.getPath());
        op.addRawArgs("-resize", IMG_W + "x" + IMG_H);
        op.addRawArgs("-background", "white");
        op.addRawArgs("-gravity", "center");
        op.addRawArgs("-extent",  IMG_W + "x" + IMG_H + "!");// + "!"
        op.addImage(outputFile.getPath());
        ConvertCmd convert = new ConvertCmd();
        // linux下不要设置此值,不然会报错
//        convert.setSearchPath(imageMagickPath);
        convert.run(op);
        LogEnum.SERVICE.error("compressPic2上传完成!");
    }


    public static void main(String[] args) {
        ImageUtil imageUtil = new ImageUtil();
        try {
            String inStr = "D:\\1020_F6BFF17C01D25EBCB39E48A6FEF2726D_20170213212252541\\e1.jpg";
            String outStr = "D:\\1020_F6BFF17C01D25EBCB39E48A6FEF2726D_20170213212252541\\1.jpg";
            imageUtil.compressPic(new File(inStr),new File(outStr));

           /* Thumbnails.of(inStr).size(800,800).keepAspectRatio(false).toFile(outStr);*/
        } catch (Exception e) {

        }
    }
}

ImageMagick常用指令详解

-quality  : 图片质量,jpg默认99,png默认75

-resize:

100x100      高度和宽度比例保留最高值,高比不变

100x100^     高度和宽度比例保留最低值,宽高比不变

100x100!      宽度和高度强制转换,忽视宽高比

100x100>     更改长宽,当图片长或宽超过规定的尺寸

100x100<     更改长宽 只有当图片长宽都超过规定的尺寸

100x100^>   更改长宽,当图片长或宽超过规定的尺寸。高度和宽度比例保留最低值

100x100^<   更改长宽,只有当图片长宽都超过规定的尺寸。高度和宽度比例保留最低值

100             按指定的宽度缩放,保持宽高比例

 x100          按指定高度缩放,保持宽高比

-gravity : NorthWest, North, NorthEast, West, Center, East,  SouthWest, South, SouthEast截取用的定位指令,定位截取区域在图片中的方位

-crop : 200x200+0+0 截取用的截取指令 ,在用定位指令后,按后两位的偏移值偏移截取范围左上角的像素后,再按前两位的数值,从左上角开始截取相应大小的图片

+repage: 去掉图片裁减后的空白

-dissolve: 30 设定组合图片透明度dissolve示例

+/-profile *   :去掉/添加图片exif信息

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值