ImageMagick PHP 中文水印解决全方案

文章分类: 吧主原创, 默认分类 |
发表于:

ImageMagick 功能强大,但在使用过程中却遇到了很大的困难,一是中文问题,二是本人对PHP也不是太熟。

主要目标:在godaddy 的虚拟主机上搭建程序,用ImageMagick处理 加中文水印,或者说加图片上的中文签名的功能 。

在 Google 上搜索 “php imagemagick 中文水印”,或者 “php imagemagick 中文乱码”,都不能得到满意的答案,大部分都是使用 Anthony 的帮助手册: http://www.imagemagick.org/Usage/annotating/#wmark_imag

但仍然不能真正解决中文问题,试过之后,分别出现以下问题:

中文水印根本不显示;ImageMagick 无法找到所需要的字体;ImageMagick 无法显示 UTF8字符;命令解释得不正确

因为我使用的是 PHP的 exec()方法调用ImageMagick 的Command Line,因此还掺杂着一些系统问题。

不过最终的方案还是比较简洁的。

参见图:

Linux下php程序调用imagemagick生成的中文水印图片

参考代码如下:
// 下面的代码测试通过

$labelStr = ” ‘” .$text .”‘ “;  // 注意,这里的 $text 就是要写的水印签名文字。要用 utf8编码

$cmd = “/usr/local/bin/convert ” .$filePath .” -font /home/content/m/Simsun.ttc -pointsize 20 -fill ‘#000000′ -undercolor ‘#FFFFFF80′ -gravity SouthEast -annotate +10+0 ” .$labelStr .$newFilePath;

echo “<br>”.$cmd . “<br>”;

exec($cmd, $out);

//—————————————————————————–

这是最开始,试了帮助手册上的方案,没试通,有兴趣的朋友也可以试一下

// 为了写中文,需要先弄到文件里才行
/* $utf8file_path = $pinfo["dirname"] ."/" ."text.utf8";
$utf8file=fopen($utf8file_path, "w");
fwrite($utf8file, $text);
fclose($utf8file);

$labelStr = ” label:@” .$utf8file_path .” “;
*/

//—————————————————————————–

注意:

1. font 参数一定要用,需要提供 ttf  字体文件,(后缀也可能是ttc)。

2. convert path, 原文件$filePath ,和目标文件 $newFilePath,都要用绝对路径,小心弄对。

3. $text 要保证是 utf8 编码。

4.  选个心情好的日子弄,这东西很多环节都可能让你耽误一阵子,需要点耐心 ^_*

      本文标签:  , , , , , ,
Trackback url : u can trackback from your own site

相关文章

发表评论