php使用Imagick生成图片的方法
本文实例讲述了php使用Imagick生成图片的方法。分享给大家供大家参考。具体如下:
这里使用Imagick生成图片
解决了图片写中文文字乱码问题,添加支持的字体
publicfunctiongetPic(){
header('Content-Type:text/html;charset=utf-8');
$text='中粮屯河(sh600737)';//中粮屯河(sh600737)
$watermark='305988103123zczcxzas';
$len=strlen($text);
$width=10.5*(($len-8)/3*2+8);
$height=26;
$imagick=newImagick();
$color_transparent=newImagickPixel('#ffffff');//transparent透明色
$imagick->newImage($width,$height,$color_transparent,'jpg');
//$imagick->borderimage('#000000',1,1);
$style['font_size']=12;
$style['fill_color']='#000000';
for($num=strlen($watermark);$num>=0;$num--){
$this->add_text($imagick,substr($watermark,$num,1),2+($num*8),30,1,$style);
$this->add_text($imagick,substr($watermark,$num,1),2+($num*8),5,1,$style);
}
//return;
$style['font_size']=20;
$style['fill_color']='#FF0000';
$style['font']='./msyh.ttf';///微软雅黑字体解决中文乱码
//$text=mb_convert_encoding($text,'UTF-8');//iconv("GBK","UTF-8//IGNORE",$text);
$this->add_text($imagick,$text,2,20,0,$style);
header('Content-type:'.strtolower($imagick->getImageFormat()));
echo$imagick->getImagesBlob();
}
//添加水印文字
publicfunctionadd_text(&$imagick,$text,$x=0,$y=0,$angle=0,$style=array()){
$draw=newImagickDraw();
if(isset($style['font']))
$draw->setFont($style['font']);
if(isset($style['font_size']))
$draw->setFontSize($style['font_size']);
if(isset($style['fill_color']))
$draw->setFillColor($style['fill_color']);
if(isset($style['under_color']))
$draw->setTextUnderColor($style['under_color']);
if(isset($style['font_family']))
$draw->setfontfamily($style['font_family']);
if(isset($style['font']))
$draw->setfont($style['font']);
$draw->settextencoding('UTF-8');
if(strtolower($imagick->getImageFormat())=='gif'){
foreach($imagickas$frame){
$frame->annotateImage($draw,$x,$y,$angle,$text);
}
}else{
$imagick->annotateImage($draw,$x,$y,$angle,$text);
}
}
希望本文所述对大家的php程序设计有所帮助。