用PHP把TXT转换为JPG
朋友说他的老式MP4不能看小说,但是能浏览图片,想把小说转换为图片在MP4上观看。PHP这样的超级语言最适于完成这样的任务了--不需要包装、快速实现。
完成这个功能的PHP程序非常简单,就是建立一块空白的画布,把小说的文字写一页在布上,然后把图片保存为文件,再写下一页,直到小说写完。
建立画布的语句是$im=imagecreate(320, 240);建立一个320*240的画布,也可以通过imagecreatefromjpeg等函数建立有背景图片的底画。
写字的语句是imagettftext($im, 12, 0, 0, ($line+1)*24-6, $color, $fnt, $s);根据行间距计算位置输出文字。# U/ j# n6 R" v4 N- v* C% v9 6 ~ k: U3 c# u% m8 @6 K
特别注意的是imagettftext函数的文字中的汉字需要使用UTF-8编码,如何把GB转换为UTF-8我不知道,如果你有好办法请一定教教我。我的办法是用PHP写个简单脚本把所有的汉字输出到一个文本文件中,汉字之间用一个|分隔,命名为gbk.txt,在WINDOWS XP里面用记事本打开,另存为utf-8.txt,编码选为UTF-8即可。需要转换的时候利用这两个文件作为字典进行翻译。
完整程序如下:
< ?php
//指定文件名★可以修改1/2
$ifn='红楼梦.txt';
//读出两个编码的字符集合文本
$gb=file("gbk.txt");
$gb=explode("|",$gb[0]);
$utf=file("utf-8.txt");
$utf=explode("|",$utf[0]);
//为了方便查询,把$gb数组的 key 与 values 交换;
$gb=array_flip($gb);
//--------全局变量$utf,$gb供函数gb2utf8使用
//设定字体★可以修改2/2
$fnt="c:/windows/fonts/simsun.ttc";
//打开文本文件
$str=file_get_contents($ifn);
//循环输出
$page=1;
while($str){
$im=imagecreate(320, 240);
$color=imagecolorallocate($im, 0,0,0);
$color=imagecolorallocate($im, 255,255,255);
$line=0;
while ($str && $line<=9){
$s='';
$len=0;
while($str && $len<=38){
$c=substr($str,0,1);
$str=substr($str,1);
if (ord($c)==10){$len=99;}
else{
if (ord($c)!=13) {$s.=$c;$len++;}
if (ord($c)>=128) {
$c=substr($str,0,1);
$str=substr($str,1);
$s.=$c;
$len++;
}
}
}
echo "$sn";
$s=gbk2utf8($s);
imagettftext($im, 12, 0, 0, ($line+1)*24-6, $color, $fnt, $s);
$line++;
}
$ofn=sprintf("%s%05d.jpg", $ifn, $page);
echo "========================================输出文件 $ofnn";
imagejpeg($im, $ofn);
imagedestroy($im);
$page++;
}
//编码转换函数
function gbk2utf8($string)
{
return iconv("GB2312","UTF-8","$msg");
}
function urllink($msg)
{
return iconv("GB2312","UTF-8","$msg");
}
?>