post by tommy @ 01 三月, 2007 14:59
首先, 為了方便使用, 我們先用下頭的程式產生 0-9 的圖檔:
<?php
$aData[0] = "零";
$aData[1] = "一";
$aData[2] = "二";
$aData[3] = "三";
$aData[4] = "四";
$aData[5] = "五";
$aData[6] = "六";
$aData[7] = "七";
$aData[8] = "八";
$aData[9] = "九";
$font = "/usr/share/fonts/truetype/msjhbd.ttf";
foreach ($aData as $num => $str) {
$im = ImageCreate(24, 24);
$background = ImageColorAllocate($im, 255, 255, 255);
$fontcolor = ImageColorAllocate($im, 0, 0, 0);
ImageTTFText($im, 16, 0, 2, 21, $fontcolor, $font, $str);
ImagePNG($im, $num.'.png');
ImageDestroy($im);
}
?>
如果你要使用別的字型, 把 font 改成你喜歡的字型檔就可以. 把產生的 png 檔案, 在 authimage 的路徑下建立一個 image 的子目錄, 把檔案放到裡頭.
然後把原本的 pluginauthimage.class.php 裡頭的 showImage() 改成下頭的內容:
function showImage() {
// Delete those cached authimage files that never used
$this->deleteExpiredAuthImage($this->expiredTime);
define( "AUTHIMAGE_IMAGE_FOLDER", PLOG_CLASS_PATH."plugins/authimage/image/" );
$code = $this->generateCode();
$encrypt = $this->encrypt($code, $this->key);
$background = AUTHIMAGE_BACKGROUND_FOLDER.$this->default;
$tempFile = $this->cacheFolder."/".$encrypt.".gif";
$len = strlen($code);
$image = ImageCreate(24 * $len, 24);
$im_bg = ImageCreateFromGIF($background);
if ($im_bg) {
list($bg_width, $bg_height, $bg_type, $bg_attr) = @GetImageSize($background);
if (function_exists('ImageCopyReSampled'))
ImageCopyReSampled($image, $im_bg, 0, 0, 0, 0, 24 * $len, 24, $bg_width, $bg_height);
else
ImageCopyReSized($image, $im_bg, 0, 0, 0, 0, 24 * $len, 24, $bg_width, $bg_height);
ImageDestroy($im_bg);
}
for ($i = 0; $i < $len; $i++) {
$im_num = @ImageCreateFromPNG(AUTHIMAGE_IMAGE_FOLDER.$code[$i].'.png');
if ($im_num) {
ImageColorTransparent($im_num, ImageColorAt($im_num, 0, 0));
ImageCopy($image, $im_num, 24 * $i, 0, 0, 0, 24, 24);
ImageDestroy($im_num);
}
}
ImagePNG($image, $tempFile);
ImageDestroy($image);
$temp = fopen($tempFile,"rb");
$buffer = fread($temp,filesize($tempFile));
fclose($temp);
// Now zero-length the file. No need for its content anymore.
$temp = fopen($tempFile,"w");
fwrite($temp, NULL);
fclose($temp);
// Now chmod it so it can be deleted later by the user
chmod($tempFile, 0666);
header("Content-type: image/png");
echo $buffer;
}
這樣子就可以顯示中文數字的圖型了.
如果不知如何產生圖檔或修改程式, 可以抓這個檔案 http://www.teatime.com.tw/~tommy/files/lifetype/lifetype_authimage_chinese.tgz 回去, 在 authimage 的目錄解開來, 覆蓋原有的檔案就可以了.
[1]
Re:讓 LifeType 的 AuthImage 顯示中文數字 [ 回覆 ]
我是lifetype的新手,日前抓了authimage的外掛,
但圖片都是叉燒包??
又想抓您的『中文版』試試,
但抓了lifetype_authimage_chinese.tgz檔解開後,
又不知如何使用,並沒有檔案可覆蓋啊??
無解了,煩請指導一下好嗎??
我是用1.2.8版的!
範例頁面在http://163.30.161.130/blog/post/16/26#comments