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 的話, 每次會隨機決定要使用的背景圖案.