$image = '1.jpeg';
$img = GetImageSize($image); //获得数组的一些信息!Array ( [0] => 240 [1] => 320 [2] => 2 [3] => width="240" height="320" [bits] => 8 [channels] => 3 [mime] => image/jpeg )
//var_dump($img);
switch ($img[2]) {
case 1 :
$im = imagecreatefromgif($image);break; //将图片转化为PHP可识别的编码过程
case 2 :
$im = imagecreatefromjpeg($image);break;
case 3 :
$im = imagecreatefrompng($image);break; //$im 是个真彩图片
break;
}
$te = imagecolorallocate($im, 255, 255, 255);
$str = iconv("gbk", "utf-8", "新年垮了"); //需要将GBK转化为UTF-8才能将中文输出
imagettftext($im, 12, 9, 20, 20, $te, 'STCAIYUN.TTF', $str);
header("Content-type: image/jpeg");
//imagejpeg($im);
//iconv()
//imagettftext()
?>
// 确保有这个字体文件存在 STCAIYUN.TTF
// iconv() 可以
使用 switch 时,请记得使用 break :
switch ($img[2]) {
case 1 :
$im = imagecreatefromgif($image);
break;
case 2 :
$im = imagecreatefromjpeg($image);
break;
case 3 :
$im = imagecreatefrompng($image);
break;
}
补充几点注意事项:
如一楼提到的,
一、你的字体文件“STCAIYUN.TTF”与该PHP文件是否在同一目录;不是的话,还得加代码以说明字体文件的位置;
二、你要读取的 1.jpeg 文件是否与该PHP文件在同一目录;
三、使用那段转码功能的前提是该PHP文件是gb码的;如果文件本身就是UTF-8的,那就没必要进行转码;
四、在输出图像后,尽量进行销毁操作,也就是在代码最后加上一句“imagedestroy($im);”;以释放占用的系统资源。
昨天我用这个函数,居然能执行swf文件 $file_info[2] = 13 -_-!
不是说只接受gif/png/jpg嘛?求高手解答