<?php
$canvas = new Imagick('1.jpg');
 
$draw = new ImagickDraw();
$draw->setFontSize(20);//设置字体大小
$draw->setTextUnderColor(new ImagickPixel ('red'));//设置背景色
$draw->setFillColor (new ImagickPixel('yellow'));//设置字体颜色
$draw->setGravity(Imagick::GRAVITY_SOUTHEAST);//设置水印位置
$draw->setFillAlpha(0.5);
$waterText=iconv("UTF-8","UTF-8//IGNORE",'你好,hello');
$draw->annotation(0, 0, $waterText);
 
$canvas->drawImage($draw);
$canvas->writeImage('1.fill.jpg');
header("Content-Type: image/jpg");
echo $canvas;
?>
即使用iconv强制转码了,同样无效,哎,纠结啊

解决方案 »

  1.   

    iconv("UTF-8","UTF-8//IGNORE",'你好,hello');???
    前后编码这么一样啊?
      

  2.   

    不好意思,我写错了,应该是:
    $waterText=iconv("GB2312","UTF-8//IGNORE",'你好,hello');
      

  3.   

    不是,我所有页面,都是用的utf-8的,不过我是用的ckfinder插件上传图片
      

  4.   

    你在页面中输出strlen('你')看看是多少
      

  5.   

    输出正确,int(3)哎,看来只有不用中文水印了,花了一个下午都没能弄出来
      

  6.   

    setFont('这里要有中文字体ttf');
    没有这句也能显示英文,只是因为用了系统默认的字体所有在图片上写字都要字体支持,编码只是“码”,不是字符本身
    同一个码,对不同字体是不同的
      

  7.   

    如果你把所有字体都删除,只剩下wingding.ttf
    这里假设windows不出错,你看到的只是一些符号,连英文都没有