`
touya
  • 浏览: 75615 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

用ImageMagick在图片中写中文的问题及解决

阅读更多
最近要用ImageMagick做个水印效果,先做一个简单版本,往图片里添加文字注释
安装ImageMagick和ghostscript(不装会报错:sh:gs:command not found)
如果是linux -- CentOS的系统,只需要yum install ghostscript,yum install imagemagick即可

当然,下载源码包安装很可以,而且可以安装最新版,例如ImageMagick已经6.3.9-6了

装完在命令行下convert --version看看其版本,并且验证是否安装成功,然后取张图片试试效果:

convert -rotate 90 xxx.jpg out.jpg

是不是旋转了?

往图片上输入文字:

convert -font helvetica -fill white -pointsize 13 \
-draw 'text 5,195 "Floriade 2002, Canberra, Australia"' \
floriade.jpg comment.jpg

意思是用helvetica字体,white颜色,13字体大小,在图片的width5,height195初开始写上双引号中的句子。

如果要写在正中心呢?有选项gravity,设置为Center就是正中心啦,设为SouthWest就是左下角,非常方便。

以上是命令行,安装了Perl的Image::Magick模块之后,就可以用Perl来调用ImageMagick了,然后问题就是:如何写入中文?ImageMagick只支持utf8编码这是文档上就写明的,不过我测试如下代码:

#!/usr/bin/perl -w
use strict;
use Image::Magick;
use Image::Size;
    my $src_path = "tutu.jpg";
    my $store_path = "tutu_comment.jpg";
    my ($width,$height) = imgsize($src_path);
    my $pointsize = int($height * 0.07);
    my $text = '中文在此!';
    my $rh_annotate = {
        text => $text,
        style => 'Normal',
        pointsize => $pointsize,
        fill => 'white',
        gravity => 'SouthWest',
    };
    my $image = Image::Magick->new();
    $image->Read($src_path);
    $image->Annotate(%$rh_annotate);
    $image->Write($store_path);
    undef $image;


居然是乱码效果!!我用的是EmEdit编辑器,该文件是保存为utf-8未签名格式的,但就是乱码!
几经测试,终于发现。。。需要一个中文字体文件的支持。
在windows上可以找到很多,c:\windows\fonts\目录下,仿宋、黑体、隶书等等都可以,这种ttf的文件copy到linux上一样有用,只需要指定font的位置即可

修改代码如下:

    my $rh_annotate = {
        text => $text,
        font => 'fonts/simfang.ttf',
        style => 'Normal',
        pointsize => $pointsize,
        fill => 'white',
        gravity => 'SouthWest',
        encoding => 'UTF-8',
    };

OK!测试通过!写出了仿宋字体的中文。

另外,如果你用的是UltraEdit,EditPlus等不支持编码格式的编辑器,那默认是gb2312的编码,需要转码才能写中文:

use Encode;
$text = encode('utf8',decode('gbk',$text));

这样就可以了,具体转码问题这里不多说了,详见Perl的Encode模块。

另外再提供给大家一些ImageMagick的经典文档:

http://www.imagemagick.org/Usage/text/

http://www.imagemagick.org/script/perl-magick.php

http://bbs.zdnet.com.cn/thread-37859-1-1.html

呵呵,希望对大家有帮助,少走歪路(我自己在写中文问题上堵了很久,一直以为是编码问题,太傻了)
1
2
分享到:
评论

相关推荐

    处理highcharts导出图片出现中文乱码的问题

    总的来说,解决Highcharts导出图片中的中文乱码问题需要综合考虑前端的Highcharts配置、后端的服务器环境、中间可能涉及的代理服务以及所有环节的字符编码设置。通过仔细排查并尝试上述方法,应该能够成功解决这个...

    jcrop + jquery+struts2 图片裁剪

    在IT行业中,图片处理是一项常见的需求,特别是在网页和应用程序中。"jcrop + jquery + struts2 图片裁剪"的组合提供了一种强大的解决方案,它整合了三个关键的技术来实现用户友好的图像裁剪功能。 首先,Jcrop是...

    php将html转为图片的实现方法

    当使用mPDF进行转换时,需要注意中文字体的设置,这是因为中文的显示在PDF中可能需要特定的字体支持。mPDF支持UTF-8编码,允许设置脚本语言自动转换为对应字体,这对于中英文混合内容的转换尤为重要。此外,mPDF允许...

    imagemagic.aspjzy.rar

    在描述中,"imagemagic.aspjzy.rar"的重复暗示了这个压缩包可能是专门针对ImageMagick在中国的应用或中文资源的集合。可能包含中文文档、示例代码、安装指南或其他对中国开发者有帮助的材料。 标签"imagemagic...

    manim常见问题v2.31

    这篇文档主要解决了在使用Manim过程中遇到的各种常见问题。以下是一些关键知识点的详细说明: 1. **MiKTeX 和 TeXLive 路径**: - 在Windows环境下,MiKTeX或TeXLive是用于处理LaTeX的分发版。为了使Manim能够正确...

    LaTeX科技排版实用手册

    **知识点21:** 使用 ImageMagick 可以轻松地处理这些图形文件,确保它们能够在 LaTeX 文档中正确显示。 ##### 2.2 BMP 格式图形 **知识点22:** BMP 格式是一种无损压缩的位图格式,可以直接插入到 LaTeX 中。 **...

    WinGifTool_gif_

    1. "WinGifTool.sln"是Visual Studio的解决方案文件,这表明该项目是在Microsoft Visual Studio环境中开发的,使用C#语言。 2. "WinGifTool"可能是一个项目文件或编译后的可执行程序,用于运行和测试这个GIF处理工具...

    用来给图片加水印的PHP类

    在PHP中,为图片添加水印是一项常见的任务,可以用于保护版权或增加品牌标识。...在实际应用中,可以结合自己的需求调整这个类,例如增加对更多图片格式的支持,或者优化水印的定位算法,使其更加智能和精确。

    tesseract-ocr-setup-3.05.01dev-20170510.exe.zip

    总的来说,Tesseract OCR是一个强大且灵活的文本识别解决方案,无论是在个人项目还是企业应用中,都能发挥重要作用。随着技术的不断发展,Tesseract OCR的性能和功能也在不断提升,使其在OCR领域的地位愈发稳固。

    suse 配置 tesseract-ocr (包含软件包)

    本文将详细介绍在SUSE系统上安装和配置Tesseract OCR的过程,以及可能遇到的问题和解决方案。 ### 1. 安装Tesseract OCR 首先,确保你的SUSE系统是最新的,通过运行以下命令来更新系统: ```bash sudo zypper ...

    文件类型分析(中文版)

    在这个“文件类型分析(中文版)”的讨论中,我们将深入探讨这个主题,并重点关注相关工具的使用。 首先,文件类型的识别是基础。扩展名是标识文件类型最直观的方式,如.txt代表文本文件,.jpg代表图像文件,.docx...

    TesseractOCR_v4.0.0

    4. **可扩展性**:Tesseract OCR可以与各种图像处理工具集成,如ImageMagick,以预处理图片,提高识别效果。此外,开发者可以通过API接口自定义识别流程,满足特定业务需求。 **安装与使用** 在安装Tesseract OCR...

    tesseract-ocr.rar

    - **图像文本提取**:从图像或截图中提取文字,例如在社交媒体图片或产品标签中。 - **自动数据输入**:在处理大量表格或表格样式的数据时,可以自动识别并导入到数据库中。 - **无障碍辅助**:帮助视障用户读取屏幕...

    简洁日记相册发布后台模板

    8. **图片处理**:相册功能可能涉及图片上传、预览、裁剪和压缩,可能使用了如jQuery-File-Upload、ImageMagick等工具。 9. **错误处理与日志记录**:为了调试和监控系统的运行状况,模板可能有完善的错误处理和日志...

Global site tag (gtag.js) - Google Analytics