`
teatot
  • 浏览: 5879 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

ImageMagick+im4java

 
阅读更多
废话不多说,直接上代码,
采用im4java压缩图片,并且图片不失真
package com.bcinfo.sns.util;

import org.im4java.core.ConvertCmd;
import org.im4java.core.IMOperation;

public class ImagesUtil {
	   /**
     * ImageMagick的路径
     */
    public static String imageMagickPath = null;
     
    static{
        /**
         * 获取ImageMagick的路径
         */
        //linux下不要设置此值,不然会报错
        imageMagickPath = "E:\\Program Files\\ImageMagick-6.7.3-Q16";   
    }
     
     
    /**
     * 根据坐标裁剪图片
     *
     * @param srcPath   要裁剪图片的路径
     * @param newPath   裁剪图片后的路径
     * @param x   起始横坐标
     * @param y   起始纵坐标
     * @param x1  结束横坐标
     * @param y1  结束纵坐标
     */
    public static void cutImage(String srcPath, String newPath, int x, int y, int x1,
            int y1)  throws Exception {
        int width = x1 - x;
        int height = y1 - y;
        IMOperation op = new IMOperation();
        op.addImage(srcPath);
         
        /**
         * width:裁剪的宽度
         * height:裁剪的高度
         * x:裁剪的横坐标
         * y:裁剪的挫坐标
         */
        op.crop(width, height, x, y);
         
        op.addImage(newPath);
         
        ConvertCmd convert = new ConvertCmd();
         
        //linux下不要设置此值,不然会报错
        convert.setSearchPath(imageMagickPath);
         
 
        convert.run(op);
    }
     
    /**
     * 根据尺寸缩放图片
     * @param width  缩放后的图片宽度
     * @param height  缩放后的图片高度
     * @param srcPath   源图片路径
     * @param newPath   缩放后图片的路径
     */
    public static void zoomImage(Integer width, Integer height, String srcPath, String newPath) throws Exception {
        IMOperation op = new IMOperation();
        op.addImage(srcPath);
         
        op.resize(width, height);
        op.addImage(newPath);
         
        ConvertCmd convert = new ConvertCmd();
         
        //linux下不要设置此值,不然会报错
        convert.setSearchPath(imageMagickPath);
         
        convert.run(op);
    }
     
     
    /**
     * 给图片加水印
     * @param srcPath   源图片路径
     */
    public static void addImgText(String srcPath) throws Exception {
        IMOperation op = new IMOperation();
        op.font("宋体").gravity("southeast").pointsize(18).fill("#BCBFC8").draw("text 5,5 bcinfo.com");      
         
        op.addImage();
        op.addImage();
        ConvertCmd convert = new ConvertCmd();
         
        //linux下不要设置此值,不然会报错
        convert.setSearchPath(imageMagickPath);
 
        convert.run(op,srcPath,srcPath);
    }
     
     
    public static void main(String[] args) throws Exception{
        //cutImage("c://images//firelily.jpg", "c://images//firelily232.jpg", 98, 48, 300, 300);
        //zoomImage(129 ,369, "c://images//ooo.jpg", "c://images//ooo2.jpg");
        //addImgText("c://images.src//firelily.jpg");
    }
}

分享到:
评论
7 楼 lz958942 2014-03-11  
我是的环境是:
OS:win7(64) 旗舰
JDK:1.7
ImageMagick:6.8.8(64)
im4java:1.4.0

op.font("宋体").gravity("southeast").pointsize(18).fill("#BCBFC8").draw("text 5,5 bcinfo.com");
这样写中文乱码

op.font("C:\\Windows\\Fonts\\simsun.ttc").gravity("southeast").pointsize(18).fill("#BCBFC8").draw("text 5,5 bcinfo.com");
这样写中文就不乱码了

请帮忙验证:这样做在其他环境是否有问题
6 楼 linfeng0306 2014-02-27  
请问,还没有人解决吗?
5 楼 zuoguiyefengliu 2013-03-15  
加水印乱码如何解决?有大侠解决过吗?谢谢
4 楼 oyang54 2013-01-08  
乱码问题有解决方案了吗? 麻烦大侠们相告. javaouyang@sina.com
3 楼 river_qin 2012-10-28  
teatot 写道
liuyong0818 写道
请问你加中文水印上去,不会乱码吗?我是乱码的

你是怎么加的?,


public static void testConvertStr() throws IOException,
InterruptedException, IM4JavaException {
System.out.println("testConvertStr 22start!!!");
IMOperation op = new IMOperation();
String x = "哈哈";
op.gravity("center").pointsize(
18).draw("text 10,10 " + x);
op.addImage();
op.addImage();
ConvertCmd convert = new ConvertCmd();
convert.setSearchPath(ImgConstants.imageMagickPath);
convert.run(op, "d:\\1.jpg", "d:\\1test.jpg");
System.out.println("testConvertStr  end!!!");
}

这是我的加汉字方法,异常:convert.exe: Non-conforming drawing primitive definition `�' @ error/draw.c/DrawImage/3160.

但是当   x="abc"的时候,图片显示完全正常,没有异常,请指教.
2 楼 teatot 2012-10-24  
liuyong0818 写道
请问你加中文水印上去,不会乱码吗?我是乱码的

你是怎么加的?,
1 楼 liuyong0818 2011-12-20  
请问你加中文水印上去,不会乱码吗?我是乱码的

相关推荐

    im4java-ImageMagick图片压缩处理

    因为im4java是基于imagemagick的commandline进行调用的java接口,不像 jmagick那样用java jni调用本地imagemagick的api那么复杂。其实安装imagemagick在任何平台都是一样的安装,在linux下面有rpm包,安装那个包,...

    imageMagick+ima4java配置

    ### ImageMagick与Im4Java配置详解 #### 一、简介 ImageMagick是一款功能强大的图像处理工具,它能够创建、编辑、合成多种格式的图片。Im4Java则是一款Java库,通过调用ImageMagick命令行接口来实现对图片的各种...

    GraphicsMagick+im4java.pdf

    im4java是ImageMagick的一个Java开源接口,使用起来非常方便。 很多网站都会用到对图片的一些处理,包括图片的裁剪、给图片加水印、按比例缩放图片等操作,用ImageMagick实现这些功能,性能非常好,图片还不会失真...

    Java图片处理解决方案:ImageMagick快速入门教程.docx

    在 Java 中使用 ImageMagick 需要先确认 JDK、Maven 正确安装,然后引入依赖 IM4Java 是 ImageMagick 的 Java API 包,它将 Java 代码转化成对 ImageMagick 的命令行调用。 IM4Java 的作用是将 Java 代码转成对 ...

    ImageMagick对应Java jar包

    总的来说,ImageMagick和im4java的组合为Java开发者提供了一种强大且灵活的方式来处理图像,而im4java的源代码则有助于理解其实现机制并进行自定义开发。在Java项目中集成im4java jar包,能够让你利用ImageMagick的...

    Java图片处理工具ImageMagick

    4. 调整配置:可能需要配置Java的系统属性,指向ImageMagick的安装路径,以便Java代码能找到并使用它。 5. 测试与优化:测试代码,确保图像处理操作按预期工作,并根据性能需求进行优化。 `Readme-说明.htm`文件...

    ChineseWaterMark:IM4JAVA+GraphicsMagick实现中文水印

    IM4JAVA是ImageMagick的一个Java接口,它提供了一个高级的API,允许Java开发者调用ImageMagick的命令行工具进行图像处理操作,如转换、裁剪、旋转、合并等。ImageMagick是一个功能强大的跨平台图像处理软件,支持...

    java,使用 phantomjs 生成网页截图,并用im4java生成缩略图,ImageMagick处理图片

    使用 phantomjs 和 im4java 生成网页缩略图,切图用的是ImageMagick,附送im4java调用ImageMagick处理图片代码,包括剪切、调整大小、调整到指定比例大小不足部分补白边。包含 phantomjs 包,不包含ImageMagick。

    Java实现pdf格式图片转换

    在java中通过ImageMagick安装包和im4java.jar把其他格式图片如pdf转换为PNG,JPEG等常用格式图片之间的相互转换。转换效率还可以。内有安装操作步骤及编码内容。亲测有效。 场景运用:在前端图片格式上传中,需要在...

    im4java-1.4.0操作图片

    ImageMagick (TM) 是一个免费的创建、编辑、合成图片的软件。它可以读取、转换、写入多种格式的图片。图片切割、颜色替换、各种效果的应用,图片的旋转、组合,文本,直线,多边形,椭圆,曲线,附加到图片伸展旋转...

    Java实现HEIC格式图片转换

    在java中通过ImageMagick安装包和im4java.jar把其他格式图片如HEIC转换为PNG,JPEG等常用格式图片。内有安装操作步骤及编码内容。亲测有效。 场景运用:ios操作系统在前端图片格式上传中。已普遍采用HEIC格式图片。...

    jmagick-6.2.4-1-IM-6.2.5.jar,ImageMagick-6.2.5-4-Q16-windows-dll.exe

    标题中的"jmagick-6.2.4-1-IM-6.2.5.jar"和"ImageMagick-6.2.5-4-Q16-windows-dll.exe"分别指的是JavaMagick库和ImageMagick软件的不同版本。这两个组件在IT领域中扮演着重要的角色,特别是对于图像处理和转换。 **...

    java处理裁剪图片(更改图片大小)

    在Java中,我们可以借助于一个名为`Im4Java`的库来调用ImageMagick的命令。例如,要改变图片尺寸,可以创建一个`ConvertOp`对象,设置其尺寸参数,然后执行转换操作。这使得开发人员无需深入了解图像处理的细节,就...

    imagemagick-docker:在容器中运行最新版本的imagemagick

    用法默认情况下,容器将运行convert命令$ docker run -v /your/images:/imgs dpokidov/imagemagick /imgs/sample.png -resize 100x100 /imgs/resized-sample.png您可以更改入口点并传递其他IM命令来执行。...

    ImageMagick

    2. **图片处理**:在Servlet中,利用Java绑定的ImageMagick API(如JavaMagick或Im4Java)进行图片处理,例如调整大小、裁剪等。 3. **Ajax通信**:使用Ajax发送异步请求,获取处理进度或结果,更新前端展示。 4. ...

    Jquery+java实现类似开心网的头像缩放截取功能

    Java提供了丰富的图像处理库,如Apache Commons Imaging(原名Apache Sanselan)或ImageMagick的Java接口Im4Java。这些库能够读取、修改和保存各种图像格式。后端接收到裁剪参数后,根据这些参数调整原始图像,裁剪...

    ImageMagick学习

    这些文件可能与使用Java语言调用ImageMagick的库有关,例如JMagick或IM4Java。`RuntimeUtil.java`可能包含了运行系统命令(如ImageMagick的命令行工具)的辅助方法,用于在Java程序中执行图像处理任务。`...

    ImageMagick-7.07-39-Q16-X64-dll

    ImageMagick 是一款开源的功能强大的图像处理工具,能转换和处理很多一直图片的格式。

    illusioniste:im4java上的微型Clojure包装器

    im4java上的(非常)薄包装器,ImageMagick命令行实用程序上的包装器。 实际上,这不过是一个小宏。 用法 将以下内容添加到您的project.clj [illusioniste“ 1.0.1-SNAPSHOT”] (ns example.core (:require ...

    javapng透明图片缩略

    - 为了获得更好的效果,开发者通常会使用第三方库,如`ImageMagick`的Java绑定(`Im4Java`)、`FreeImage`库或者`Apache Commons Imaging`(前身是`Sanselan`)。 2. **PNG透明度处理**: - PNG图像的透明度由...

Global site tag (gtag.js) - Google Analytics