Chinaunix
标题:
PHP生成缩略图+水印
[打印本页]
作者:
ClearWind
时间:
2008-09-26 16:08
标题:
PHP生成缩略图+水印
文件:upload.rar
大小:1KB
下载:
下载
很久以前写的一个了,今天有哥们问我要一个.再次整理一下,留着有需要的时候用到.
/* 参数列表,其中[原图路径][新图路径]一定要有,其它参数可使用默认,如:CreateSmallImage("1.jpg", "2.jpg");
* $OldImagePath 原图路径
* $NewImagePath 新图路径
* $WatermarkStr 水印文字
* $WriteInStringSize 水印文字,字体大小
* $NewWidth 新图宽度
* $NewHeight 新图高度
* $fontpath 水印字体路径
*/
function CreateSmallImage( $OldImagePath, $NewImagePath, $WatermarkStr = "", $WriteInStringSize = 15, $NewWidth=250, $NewHeight=185, $fontpath="upload/STXINWEI.TTF" )
{
// 建立目录
$dirArr = explode("/", $NewImagePath);
$newPath = $dirArr[0].'/';
foreach ($dirArr AS $dk => $dv)
{
if (($dk 0)
{
$newPath .= $dv.'/';
if (!is_dir($newPath)) mkdir($newPath, 0777); chmod($newPath, 0777);
}
}
// 取出原图,获得图形信息getimagesize参数说明:0(宽),1(高),2(1gif/2jpg/3png),3(width="638" height="340"),后面还有点其它信息好像用处不大
$OldImageInfo = getimagesize($OldImagePath);
if ( $OldImageInfo[2] == 1 ) $OldImg = @imagecreatefromgif($OldImagePath);
elseif ( $OldImageInfo[2] == 2 ) $OldImg = @imagecreatefromjpeg($OldImagePath);
else $OldImg = @imagecreatefrompng($OldImagePath);
// 创建图形,imagecreate参数说明:宽,高
$NewImg = imagecreatetruecolor( $NewWidth, $NewHeight );
// 给图形着背景色
/* 暂时用不着 */
// 创建色彩,参数:图形,red(0-255),green(0-255),blue(0-255)
$black = ImageColorAllocate( $NewImg, 0, 0, 0 ); // 黑色
$white = ImageColorAllocate( $NewImg, 255, 255, 255 ); // 白色
$red = ImageColorAllocate( $NewImg, 255, 0, 0 ); // 红色
$blue = ImageColorAllocate( $NewImg, 0, 0, 255 ); // 蓝色
$other = ImageColorAllocate( $NewImg, 0, 255, 0 ); // 不知道叫什么
// 新图形高宽处理
$WriteNewWidth = $NewHeight*$OldImageInfo[0] / $OldImageInfo[1]; // 要写入的高度
$WriteNewHeight = $NewWidth*$OldImageInfo[1] / $OldImageInfo[0]; // 要写入的宽度
if ( $WriteNewWidth 72 ) $WriteInStringSize = 72;
$WriteInStringArea = ImageTTFBBox( $WriteInStringSize, 0, $fontpath, $WatermarkStr );
while ( $WriteInStringArea[2] > $NewHeight )
{
$WriteInStringSize -= 5;
$WriteInStringArea = ImageTTFBBox( $WriteInStringSize, 0, $fontpath, $WatermarkStr );
}
$WriteInStringX = $NewWidth - $WriteInStringArea[2] - 5;
$WriteInStringY = $NewHeight - $WriteInStringArea[3] - 5;
// 转换水印编码
$WatermarkStr = iconv( "gb2312", "UTF-8", $WatermarkStr );
// 在新图形上写入文字,ImageTTFText参数说明:要写入的图形,字型尺寸,为字型的角度,x,y,颜色参数,字体路径,字符串内容
ImageTTFText( $NewImg, $WriteInStringSize, 0, $WriteInStringX, $WriteInStringY, $other, $fontpath, $WatermarkStr );
}
// 保存文件
@imagegif( $NewImg, $NewImagePath );
// 结束图形
@imagedestroy($NewImg);
}
本文来自ChinaUnix博客,如果查看原文请点:
http://blog.chinaunix.net/u/22697/showart_1226425.html
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2