最近要用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
呵呵,希望对大家有帮助,少走歪路(我自己在写中文问题上堵了很久,一直以为是编码问题,太傻了)
分享到:
相关推荐
总的来说,解决Highcharts导出图片中的中文乱码问题需要综合考虑前端的Highcharts配置、后端的服务器环境、中间可能涉及的代理服务以及所有环节的字符编码设置。通过仔细排查并尝试上述方法,应该能够成功解决这个...
在IT行业中,图片处理是一项常见的需求,特别是在网页和应用程序中。"jcrop + jquery + struts2 图片裁剪"的组合提供了一种强大的解决方案,它整合了三个关键的技术来实现用户友好的图像裁剪功能。 首先,Jcrop是...
当使用mPDF进行转换时,需要注意中文字体的设置,这是因为中文的显示在PDF中可能需要特定的字体支持。mPDF支持UTF-8编码,允许设置脚本语言自动转换为对应字体,这对于中英文混合内容的转换尤为重要。此外,mPDF允许...
在描述中,"imagemagic.aspjzy.rar"的重复暗示了这个压缩包可能是专门针对ImageMagick在中国的应用或中文资源的集合。可能包含中文文档、示例代码、安装指南或其他对中国开发者有帮助的材料。 标签"imagemagic...
这篇文档主要解决了在使用Manim过程中遇到的各种常见问题。以下是一些关键知识点的详细说明: 1. **MiKTeX 和 TeXLive 路径**: - 在Windows环境下,MiKTeX或TeXLive是用于处理LaTeX的分发版。为了使Manim能够正确...
**知识点21:** 使用 ImageMagick 可以轻松地处理这些图形文件,确保它们能够在 LaTeX 文档中正确显示。 ##### 2.2 BMP 格式图形 **知识点22:** BMP 格式是一种无损压缩的位图格式,可以直接插入到 LaTeX 中。 **...
1. "WinGifTool.sln"是Visual Studio的解决方案文件,这表明该项目是在Microsoft Visual Studio环境中开发的,使用C#语言。 2. "WinGifTool"可能是一个项目文件或编译后的可执行程序,用于运行和测试这个GIF处理工具...
在PHP中,为图片添加水印是一项常见的任务,可以用于保护版权或增加品牌标识。...在实际应用中,可以结合自己的需求调整这个类,例如增加对更多图片格式的支持,或者优化水印的定位算法,使其更加智能和精确。
总的来说,Tesseract OCR是一个强大且灵活的文本识别解决方案,无论是在个人项目还是企业应用中,都能发挥重要作用。随着技术的不断发展,Tesseract OCR的性能和功能也在不断提升,使其在OCR领域的地位愈发稳固。
本文将详细介绍在SUSE系统上安装和配置Tesseract OCR的过程,以及可能遇到的问题和解决方案。 ### 1. 安装Tesseract OCR 首先,确保你的SUSE系统是最新的,通过运行以下命令来更新系统: ```bash sudo zypper ...
在这个“文件类型分析(中文版)”的讨论中,我们将深入探讨这个主题,并重点关注相关工具的使用。 首先,文件类型的识别是基础。扩展名是标识文件类型最直观的方式,如.txt代表文本文件,.jpg代表图像文件,.docx...
4. **可扩展性**:Tesseract OCR可以与各种图像处理工具集成,如ImageMagick,以预处理图片,提高识别效果。此外,开发者可以通过API接口自定义识别流程,满足特定业务需求。 **安装与使用** 在安装Tesseract OCR...
- **图像文本提取**:从图像或截图中提取文字,例如在社交媒体图片或产品标签中。 - **自动数据输入**:在处理大量表格或表格样式的数据时,可以自动识别并导入到数据库中。 - **无障碍辅助**:帮助视障用户读取屏幕...
8. **图片处理**:相册功能可能涉及图片上传、预览、裁剪和压缩,可能使用了如jQuery-File-Upload、ImageMagick等工具。 9. **错误处理与日志记录**:为了调试和监控系统的运行状况,模板可能有完善的错误处理和日志...