jar包地址  http://downloads.jmagick.org/6.3.9/

我在window下使用的是    jmagick-win-6.3.9-Q8.zip 和  ImageMagick-6.3.9-0-Q8-windows-dll.exe

linux下使用的是         JMagick-6.2.6-0.tar.gz    和 ImageMagick-x86_64-pc-linux-gnu.tar.gz

doc地址   http://downloads.jmagick.org/jmagick-doc/

windows

一 .  安装 ImageMagick-6.3.9-0-Q8-windows-dll.exe

二 .  将 安装目录下 “C:\Program Files\ImageMagick-6.3.9-Q8\ ”(按自己所安装的目录找) 下的所有dll文件 copy 到系统盘下的 “C:\WINDOWS\system32\”文件夹里

三 .  配置环境变量

再环境变量path里添加新的值 “C:\Program Files\ImageMagick-6.3.9-Q8”

四 .  解压jmagick-win-6.3.9-Q8.zip

将 jmagick.dll 复制到系统盘下的 “C:\WINDOWS\system32\”文件夹里

将 jmagick.jar 项目lib下

linux

朋友配的 得自己去网上找资料

操作范例

Java代码 
package com.utils;

import java.awt.Dimension;  
import java.awt.Rectangle;  
import java.text.SimpleDateFormat;  
import java.util.Date;

import magick.CompositeOperator;  
import magick.CompressionType;  
import magick.DrawInfo;  
import magick.ImageInfo;  
import magick.MagickException;  
import magick.MagickImage;  
import magick.PixelPacket;  
import magick.PreviewType;

public class Aa {

static{  
        //不能漏掉这个,不然jmagick.jar的路径找不到  
        System.setProperty("jmagick.systemclassloader","no");  
    }  
      
    /** 
     * 压缩图片 
     * @param filePath 源文件路径 
     * @param toPath   缩略图路径 
     */ 
    public static void createThumbnail(String filePath, String toPath) throws MagickException{  
        ImageInfo info = null;  
        MagickImage image = null;  
        Dimension imageDim = null;  
        MagickImage scaled = null;  
        try{  
            info = new ImageInfo(filePath);  
            image = new MagickImage(info);  
            imageDim = image.getDimension();  
            int wideth = imageDim.width;  
            int height = imageDim.height;  
            if (wideth > height) {  
                height = 660 * height / wideth;  
                wideth = 660;  
            }   
            scaled = image.scaleImage(wideth, height);//小图片文件的大小.  
            scaled.setFileName(toPath);  
            scaled.writeImage(info);  
        }finally{  
            if(scaled != null){  
                scaled.destroyImages();  
            }  
        }    
    }  
      
    /** 
     * 水印(图片logo) 
     * @param filePath  源文件路径 
     * @param toImg     修改图路径 
     * @param logoPath  logo图路径 
     * @throws MagickException 
     */ 
    public static void initLogoImg(String filePath, String toImg, String logoPath) throws MagickException {  
        ImageInfo info = new ImageInfo();  
        MagickImage fImage = null;  
        MagickImage sImage = null;  
        MagickImage fLogo = null;  
        MagickImage sLogo = null;  
        Dimension imageDim = null;  
        Dimension logoDim = null;  
        try {  
            fImage = new MagickImage(new ImageInfo(filePath));  
            imageDim = fImage.getDimension();  
            int width = imageDim.width;  
            int height = imageDim.height;  
            if (width > 660) {  
                height = 660 * height / width;  
                width = 660;  
            }  
            sImage = fImage.scaleImage(width, height);  
              
            fLogo = new MagickImage(new ImageInfo(logoPath));  
            logoDim = fLogo.getDimension();  
            int lw = width / 8;  
            int lh = logoDim.height * lw / logoDim.width;  
            sLogo = fLogo.scaleImage(lw, lh);

sImage.compositeImage(CompositeOperator.AtopCompositeOp, sLogo,  width-(lw + lh/10), height-(lh + lh/10));  
            sImage.setFileName(toImg);  
            sImage.writeImage(info);  
        } finally {  
            if(sImage != null){  
                sImage.destroyImages();  
            }  
        }  
    }  
      
    /** 
     * 水印(文字) 
        * @param filePath 源文件路径 
     * @param toImg    修改图路径 
     * @param text     名字(文字内容自己随意) 
     * @throws MagickException 
     */ 
    public static void initTextToImg(String filePath, String toImg,  String text) throws MagickException{  
            ImageInfo info = new ImageInfo(filePath);  
            if (filePath.toUpperCase().endsWith("JPG") || filePath.toUpperCase().endsWith("JPEG")) {  
                info.setCompression(CompressionType.JPEGCompression); //压缩类别为JPEG格式  
                info.setPreviewType(PreviewType.JPEGPreview); //预览格式为JPEG格式  
                info.setQuality(95);  
            }  
            MagickImage aImage = new MagickImage(info);  
            Dimension imageDim = aImage.getDimension();  
            int wideth = imageDim.width;  
            int height = imageDim.height;  
            if (wideth > 660) {  
                height = 660 * height / wideth;  
                wideth = 660;  
            }  
            int a = 0;  
            int b = 0;  
            String[] as = text.split("");  
            for (String string : as) {  
                if(string.matches("[\u4E00-\u9FA5]")){  
                    a++;  
                }  
                if(string.matches("[a-zA-Z0-9]")){  
                    b++;  
                }  
            }  
            int tl = a*12 + b*6 + 300;  
            MagickImage scaled = aImage.scaleImage(wideth, height);  
            if(wideth > tl && height > 5){  
                DrawInfo aInfo = new DrawInfo(info);  
                aInfo.setFill(PixelPacket.queryColorDatabase("white"));  
                aInfo.setUnderColor(new PixelPacket(0,0,0,100));  
                aInfo.setPointsize(12);  
                //解决中文乱码问题,自己可以去随意定义个自己喜欢字体,我在这用的微软雅黑  
                String fontPath = "C:/WINDOWS/Fonts/MSYH.TTF";  
//              String fontPath = "/usr/maindata/MSYH.TTF";  
                aInfo.setFont(fontPath);  
                aInfo.setTextAntialias(true);  
                aInfo.setOpacity(0);  
                aInfo.setText(" " + text + "于 " + new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + " 上传于XXXX网,版权归作者所有!");  
                aInfo.setGeometry("+" + (wideth-tl) + "+" + (height-5));  
                scaled.annotateImage(aInfo);  
            }  
            scaled.setFileName(toImg);  
            scaled.writeImage(info);  
            scaled.destroyImages();  
    }  
      
      
    /** 
     * 切图 
     * @param imgPath 源图路径 
     * @param toPath  修改图路径 
     * @param w        
     * @param h        
     * @param x        
     * @param y 
     * @throws MagickException 
     */ 
    public static void cutImg(String imgPath, String toPath, int w, int h, int x, int y) throws MagickException {  
        ImageInfo infoS = null;  
        MagickImage image = null;  
        MagickImage cropped = null;  
        Rectangle rect = null;  
        try {  
            infoS = new ImageInfo(imgPath);  
            image = new MagickImage(infoS);  
            rect = new Rectangle(x, y, w, h);  
            cropped = image.cropImage(rect);  
            cropped.setFileName(toPath);  
            cropped.writeImage(infoS);  
              
        } finally {  
            if (cropped != null) {  
                cropped.destroyImages();  
            }  
        }  
    }  
}

【转】Jmagick的使用例子相关推荐

  1. 高斯回归过程应用例子

    假设现在已经观察到了6个样本点,x为样本点特征(一维的),y为样本输出值. 现在新来了一个样本点,要求是用高斯回归过程来预测新来样本点的输出值.这些样本点显示如下; 其中前面6个点是已知输出值的训练样 ...

  2. 语义网所谓的“本体”的具体例子是什么?人工智能

    作者:王喆 链接:https://www.zhihu.com/question/19558514/answer/26323766 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请 ...

  3. pytorch记录:seq2seq例子看看这torch怎么玩的

    https://blog.csdn.net/nockinonheavensdoor/article/details/82320580 先看看简单例子: import torch import torc ...

  4. 适用于CUDA GPU的Numba例子

    • 适用于CUDA GPU的Numba例子 矩阵乘法 这是使用CUDA内核的矩阵乘法的简单实现: @cuda.jit def matmul(A, B, C): """Pe ...

  5. c语言连接数据库例子,c语言操作mysql数据库小例子_互帮互助(C language MySQL database operation example _ mutual help).doc...

    这是精心收集的精品经典资料,值得下载保存阅读! c语言操作mysql数据库小例子_互帮互助(C language MySQL database operation example _ mutual h ...

  6. 30 个 php 操作 redis 常用方法代码例子

    这篇文章主要介绍了 30 个 php 操作 redis 常用方法代码例子 , 本文其实不止 30 个方法 , 可以操作 string 类 型. list 类型和 set 类型的数据 , 需要的朋友可以 ...

  7. Ubantu下hadoop运行第一个例子wordcount过程

    Ubantu12.04下hadoop-1.2.1运行第一个例子wordcount过程,分享一下 将WordCount.java文件放在Hadoop安装目录下,并在安装目录下创建输入目录input,目录 ...

  8. C#关于面对象多态例子

    //主的喂狗 class Program     {         static void Main(string[] args)         {             //我们来模拟一个主人 ...

  9. [摘]终于找到一个有助理解left/right/full outer join的例子

    近日在学习<Understading DB2>的时候找到了一个例子,对于理解 left/right/full 三种 outer join 的大有裨益. 先看样本数据,来自DB2的示例数据库 ...

  10. 初学 Delphi 嵌入汇编[3] - 第一个 Delphi 与汇编的例子

    前面知道了一个汇编的赋值指令(MOV), 再了解一个加法指令(ADD), 就可以做个例子了. 譬如: ADD AX,BX; 这相当于 Delphi 中的 AX := AX + BX; 另外提前来个列表 ...

最新文章

  1. Educational Codeforces Round 84 (Rated for Div. 2) A~ ESZU cf集训
  2. php8支持哪些新特征,PHP8 新特性总结(一)
  3. Bootstrap table 行编辑导航
  4. 猫猫学iOS(四十四)之网易彩票自定义图片在右边的Button_弹出view_ios6,7简单适配...
  5. 分布式是写出来的(三)
  6. STM32那点事(5)_ADC(中)
  7. 由Object.prototype.toString.call( )引发关于toString( )方法的思考
  8. 收款码合并有什么弊端_合并收款码小程序,合并收款码助手
  9. java取linux本地xml,java-使用apache poi读取.xlsx文件会在Linux机器...
  10. 人人都是产品经理1.0
  11. redis集群原理(简版)
  12. java mysql 分区表_mysql分区表
  13. 10天精读掌握:计算机组成与设计COAD:Patterson and Hennessy 第7天 2018/11.1
  14. 未来5年互联网,运营将成比产品更加有前途的职业?
  15. Linux报错:tar: Error Is Not Recoverable: Exiting Now
  16. vue 符号..._如何在Windows 8.1上输入和使用表情符号
  17. CISC, RISC 区别
  18. 什么是好的BIM轻量化引擎
  19. Linux内核驱动初探(一) LVDS显卡
  20. 平台 DllRegisterServer调用失败

热门文章

  1. Wireshark实战分析之DHCP协议(一)
  2. Android UI学习之---Button
  3. Android分区查看方法
  4. msm 关机充电开启与关闭
  5. ffmpeg 自定义数据来源
  6. Linux系统下init进程的前世今生
  7. SystemTap Errors Introduce
  8. android Camera framework层解析
  9. android sdk 转移_腾讯微博java(android)sdk关系链api详细介绍
  10. python正则表达式面试题,带有utf8问题的python正则表达式