`
棋子chessman
  • 浏览: 197019 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

GraphicsMagick+IM4JAVA在mac环境安装使用及中文乱码

    博客分类:
  • GM
 
阅读更多

GM是什么,上网查查,IM4java是什么,也请上网查。以下的介绍同样适合其他语言使用gm或是ImageMagick的安装和中文乱码的情况。ImageMagick也测试通过

 

1、下载如下,并全部解压(参见官方依赖下载地址ftp://ftp.graphicsmagick.org/pub/GraphicsMagick/delegates):

libpng-1.6.19.tar.gz 支持png格式

jpegsrc.v9.tar.gz支持Jpeg格式

ghostscript-9.15.tar.gz支持字体

GraphicsMagick-1.3.23.tar.gz主图片处理程序

freetype-2.6.2.tar.gz字体引擎

 

2、分别进入libpng、jpegsrc、freetype、ghostscript的解压目录,分别执行如下命令。

./configure

make

sudo make install

 

3、进入GraphicsMagick解压目录,执行如下命令。

./configure --prefix=/usr/local/GraphicsMagick-1.3.23 --with-quantum-depth=16   --enable-shared --enable-static  --with-windows-font-dir=/Library/Fonts --with-gslib=no

make

make install

 

注:

 --prefix:是指安装目录

 --with-quantum-depth:指图色深,16位还是8位

 --with-windows-font-dir:windows字体的安装目录

 

 GraphicsMagick执行完第一条./configure命令后,最后会有如下的内容,注意其中的Ghostscript、JPEG v1、PNG、FreeType的Configured value部分都应该是yes或是有值,这样才能基本支持jpeg\png和字体。

 

 

Option            Configure option           	Configured value
 -----------------------------------------------------------------
 Shared libraries  --enable-shared=yes    	yes
 Static libraries  --enable-static=yes    	yes
 GNU ld            --with-gnu-ld=no        	no
 Quantum depth     --with-quantum-depth=16 	16
 Modules           --with-modules=no        	no

 Delegate Configuration:
 BZLIB             --with-bzlib=yes          	yes
 DPS               --with-dps=yes              	no
 FlashPIX          --with-fpx=no              	no
 FreeType 2.0      --with-ttf=yes          	yes
 Ghostscript       None                   	gs (unknown)
 Ghostscript fonts --with-gs-font-dir=default    none
 Ghostscript lib   --with-gslib=no       	no
 JBIG              --with-jbig=yes        	no
 JPEG v1           --with-jpeg=yes        	yes
 JPEG-2000         --with-jp2=yes          	no
 LCMS v2           --with-lcms2=yes        	no
 LZMA              --with-lzma=yes        	no (failed tests)
 Magick++          --with-magick-plus-plus=yes 	yes
 PERL              --with-perl=no            	no
 PNG               --with-png=yes          	yes (-lpng16)
 TIFF              --with-tiff=yes        	no
 TRIO              --with-trio=yes        	no
 WEBP              --with-webp=yes        	no
 Windows fonts     --with-windows-font-dir=	none
 WMF               --with-wmf=yes          	no
 X11               --with-x=             	no
 XML               --with-xml=yes          	yes
 ZLIB              --with-zlib=yes        	yes

 X11 Configuration:

   Not using X11.

 Options used to compile and link:
   CC       = gcc
   CFLAGS   = -g -O2 -Wall -D_THREAD_SAFE
   CPPFLAGS = -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/libxml2
   CXX      = g++
   CXXFLAGS = -D_THREAD_SAFE
   DEFS     = -DHAVE_CONFIG_H
   LDFLAGS  = 
   LIBS     = -ljpeg -lpng16 -lbz2 -lxml2 -lz -lm -lpthread

 

 

   

4、配置环境变量(对于java中im4java调用,以下配置无意义,所以此步也可省略):

 

export GMAGICK_HOME=/usr/local/GraphicsMagick-1.3.18
export PATH="$GMAGICK_HOME/bin:$PATH" 

export IM4JAVA_TOOLPATH=$GMAGICK_HOME/bin/gm

 

 

 

5、终端中输入如下命令进行测试。

 

gm convert 111.jpg 222.png
gm convert 111.jpg -resize 100x100 out.jpg
gm convert -list formats
gm convert Arial -fill white -pointsize 24 -draw "text 10,15 'lifesinger 2006' "  /Users/xxx/Documents/temp/2.png /Users/xxx/Documents/temp/2new.png

 

6、JAVA代码例子。

注:网上的文章针对中文乱码的原因解释大多都是错的,首先可确定是GM如上版本是肯定支持中文水印之类的,也不存在什么单数中文和双数中文支持的问题。并且还看到有人先用AWT生成透明底的水印图片,再把主图与这个水印图片用GM合并。别的不说,用awt与gm的这两方案性能比较一下,你就会发现是数量级的差别,就先不提图片质量和大小等。

关键是两点:

a.要使用中文字体,使用非中文字体会乱码。

b.GM只接收UTF-8的内容,否则乱码,所以传的值要UTF-8编码。你可以整个*.java文件设置为utf-8编码,也可以对传入的水印内容String转成uft-8编码。如以下例子的WaterMark.java文件即为utf-8编码。

import org.im4java.core.ConvertCmd;
import org.im4java.core.IM4JavaException;
import org.im4java.core.IMOperation;
import org.im4java.process.Pipe;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class WaterMark {
    public static void main(String[] args) throws Exception {
        String src="/Users/xxx/Documents/temp/test/ban.jpg";  //需要加水印的源图片
        String desc="/Users/xxx/Documents/temp/test/new/abc"; //生成的水印图片的路径

//        String src1="/Users/xxx/Documents/temp/test/icon.jpg";  //需要加水印的源图片
//        String desc1="/Users/xxx/Documents/temp/test/new/icon"; //生成的水印图片的路径
        String content = "中文";

        for (int i = 0; i < 10; i++) {
            addImgText(src, content + i, desc + i + ".jpg");
        }

//        for (int i = 0; i < 1; i++) {
//            addImgText(src1, content + i, desc1 + i + ".jpg");
//        }
    }

    /**
     * 给图片加水印
     * @param srcPath   源图片路径
     */
    public static void addImgText(String srcPath, String content, String desc) throws Exception {
        IMOperation op = new IMOperation();
        op.font("/Library/Fonts/Yuanti.ttc").gravity("southeast").pointsize(18).fill("#BCBFC8").draw("text 10,15 '" + content + "'").quality(90.0);
        op.addImage();
        op.addImage();

        ConvertCmd cmd = new ConvertCmd(true);

        cmd.setAsyncMode(true);
        cmd.setSearchPath("/usr/local/GraphicsMagick-1.3.18/bin");// 如果是windows则需要设置convert路径

        try {
            cmd.run(op,srcPath,desc);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (IM4JavaException e) {

            e.printStackTrace();
        }
    }

}

 

分享到:
评论

相关推荐

    GraphicsMagick+im4java.pdf

    GraphicsMagick可以在绝大多数的平台上使用,Linux、Mac、Windows都没有问题。 GraphicsMagick 支持大图片的处理,并且已经做过GB级别的图像处理实验。GraphicsMagick能够动态的生成图片,特别适用于互联网的应用。...

    ChineseWaterMark:IM4JAVA+GraphicsMagick实现中文水印

    通过IM4JAVA,我们可以方便地在Java代码中调用GraphicsMagick的命令,实现对图像的水印处理。 在"ChineseWaterMark"项目中,核心部分应该是如何正确处理中文字符作为水印。中文字符的编码和渲染在计算机图形学中...

    im4java-1.4.0.jar

    im4java-1.4.0.jar,用于ImagineMagick和GraphicsMagick

    GraphicsMagick在Linux环境的安装

    在Linux环境中安装GraphicsMagick是一项常见的任务,尤其对于开发者和系统管理员来说,它能帮助他们快速地对图像进行转换、裁剪、缩放等操作。下面将详细介绍在Linux环境下安装GraphicsMagick的过程。 首先,确保你...

    GraphicsMagick安装包

    在实际应用中,你可以根据需求使用GraphicsMagick和im4java进行复杂的图像处理操作,例如批量转换、添加水印、调整图像质量等。了解GraphicsMagick的命令行选项和im4java的API是充分发挥它们潜力的关键。

    GraphicsMagick

    "gm"可能是压缩包内的主要程序或者脚本文件,通常在GraphicsMagick的使用中,"gm"代表GraphicsMagick的命令行接口。用户可以通过执行"gm command image.jpg"这样的命令来调用不同的处理命令,如"gm convert"用于图像...

    使用Tengine+Lua+GraphicsMagick实现图片自动裁剪缩放

    在安装和配置完成后,我们可以使用Lua脚本控制GraphicsMagick对图片的处理,并通过Tengine实现图片的自动裁剪和缩放。 本解决方案的优点是: 1. 实现了图片的自动裁剪和缩放,适应不同的规格和比例尺寸 2. 降低了...

    GraphicsMagick-1.3.25-Q8-win64-dll Windows 64位安装版

    在安装GraphicsMagick时,你需要了解以下关键知识点: 1. **安装过程**:通常,执行.exe文件会引导你通过一个简单的安装向导,让你选择安装路径、是否创建桌面快捷方式等选项。确保你有管理员权限,因为安装过程中...

    使用GraphicsMagick处理图片含Demo

    在本文中,我们将深入探讨如何利用GraphicsMagick进行图片处理,并通过一个Java Demo程序——ImageUtil.java来展示其实现。 首先,GraphicsMagick-1.3.25-Q16-win64-dll.exe是GraphicsMagick在Windows平台上的安装...

    Nginx+Lua+GraphicsMagick图片缩略图

    Nginx+Lua+GraphicsMagick实现动态生成指定尺寸的图片

    node-gm-native:用于 Node 的本地 GraphicsMagick++ 插件

    GraphicsMagick++ 的本机绑定。 一些细节可以在这篇找到。 快速使用: var gm = require ( 'gm-native' ) ; var outputBuffer = gm . convert ( // Required. Can also be URL, file path or Buffer object. ...

    GraphicsMagick-1.3.40安装包

    它提供了命令行界面,使得在各种脚本环境中处理图像变得简单。这个安装包是GraphicsMagick的1.3.40版本,包含了适用于不同操作系统的二进制文件。 在Linux系统中,通常我们会用到`GraphicsMagick-1.3.40.tar.gz`这...

    nginx-lua-GraphicsMagick

    在服务器上安装GraphicsMagick,可以实现快速的图片转换、裁剪和尺寸调整等功能。首先,确保你的服务器操作系统是Linux(例如Ubuntu或CentOS),然后通过以下命令进行安装: 对于Ubuntu: ```bash sudo apt-get ...

    openresty + lua-resty-weedfs + graphicsmagick小文件部署方案

    将图片的上传,分布式管理 交由seaweedfs管理,可提供更快的响应速度,更方便,无痛的分布式扩展节点,billion 级别的。后面使用openresty + lua-resty-weedfs + graphicsmagick 生成缩略图功能独立处理。

    GraphicsMagick-1.3.33.zip

    执行这个文件将启动安装过程,用户可以在Windows环境中快速安装GraphicsMagick。 3. **a.jpg**:这是一个JPEG图像文件,是GraphicsMagick可以处理的众多图像格式之一。使用GraphicsMagick,用户可以对这个图像执行...

    GraphicsMagick-1.3.30 for Linux

    在提供的压缩文件列表中,`GraphicsMagick-1.3.30.tar.gz`是源代码包,通常需要通过编译来安装。安装过程涉及解压、配置、编译和安装等步骤,对于Linux用户来说,通常使用`tar`命令解压,`./configure`进行配置,`...

    GraphicsMagick图片截取软件全套及相应的demo.rar

    在这个"GraphicsMagick图片截取软件全套及相应的demo.rar"压缩包中,你将找到完整的GraphicsMagick软件包以及相关的示例(demo),这将帮助你快速理解和应用到实际的Java项目中。 首先,让我们深入了解一下...

    GraphicsMagick-1.3.12-Q16-windows-dll.exe

    对于Java开发者来说,常用的图片处理工具有3个,JDK自带的图片处理库,ImageMagick,GraphicsMagick。JDK自带的图片处理库,虽稳定简单,性能却比较差;ImageMagick是目前最流行的图片处理工具,它的功能非常丰富;...

Global site tag (gtag.js) - Google Analytics