Tommy 碎碎念

Tommy Wu's blog

« 上一篇 | 下一篇 »

讓 LifeType 的 AuthImage 顯示中文數字 Part II
post by tommy @ 14 三月, 2007 15:01
加上動態使用背景圖案並把顯示的文字做些旋轉.

修改 pluginauthimage.class.php 裡頭的 showImage() 改成下頭的內容:

function showImage() {
// Delete those cached authimage files that never used
$this->deleteExpiredAuthImage($this->expiredTime);
 
$code = $this->generateCode();
$encrypt = $this->encrypt($code, $this->key);
$background = AUTHIMAGE_BACKGROUND_FOLDER.$this->default;
if ($this->default == 'random.gif') {
$files = glob(AUTHIMAGE_BACKGROUND_FOLDER.'*.gif');
$cnt = count($files);
$choose = rand(0, $cnt-1);
$background = $files[$choose];
}
$tempFile = $this->cacheFolder."/".$encrypt.".gif";
 
if (function_exists('ImageRotate'))
$size = 36;
else
$size = 24;
$len = strlen($code);
$image = ImageCreate($size * $len, $size);
$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, $size * $len, $size, $bg_width, $bg_height);
else
ImageCopyReSized($image, $im_bg, 0, 0, 0, 0, $size * $len, $size, $bg_width, $bg_height);
ImageDestroy($im_bg);
}
for ($i = 0; $i < $len; $i++) {
$im_num = @ImageCreateFromPNG(AUTHIMAGE_IMAGE_FOLDER.$code[$i].'.png');
if (function_exists('ImageRotate')) {
$im_rotate = ImageRotate($im_num, rand(-45, 45), 0);
ImageDestroy($im_num);
$im_num = ImageCreate($size, $size);
if (function_exists('ImageCopyReSampled'))
ImageCopyReSampled($im_num, $im_rotate, 0, 0, 0, 0, $size, $size, imagesx($im_rotate), imagesy($im_rotate));
else
ImageCopyReSized($im_num, $im_rotate, 0, 0, 0, 0, $size, $size, imagesx($im_rotate), imagesy($im_rotate));
ImageDestroy($im_rotate);
}
if ($im_num) {
ImageColorTransparent($im_num, ImageColorAt($image,0, 0));
ImageCopy($image, $im_num, $size * $i, 0, 0, 0, $size, $size);
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;
}

然後把 backgrounds 下頭的 transparent.gif 複製為 random.gif. 這樣子的話, 如果你在 LifeType 的設定裡頭, 選擇用 random.gif 的話, 每次會隨機決定要使用的背景圖案.

Del.icio.us Furl HEMiDEMi Technorati MyShare
迴響
暱稱:
標題:
個人網頁:
電子郵件:
authimage

迴響

  

Bad Behavior 已經阻擋了 138 個過去 7 天試圖闖關的垃圾迴響與引用。
Power by LifeType. Template design by JamesHuang. Valid XHTML and CSS