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