ホームページ  >  記事  >  バックエンド開発  >  PHP 画像の比例スケーリングとロゴ透かしコードの詳細とコメントの追加

PHP 画像の比例スケーリングとロゴ透かしコードの詳細とコメントの追加

WBOY
WBOYオリジナル
2016-06-20 13:02:161037ブラウズ

PHP 画像のスケーリングとロゴの透かしコードの追加に関する詳細な説明とコメント

//PHP图片的等比缩放和增加Logo水印 
 
/**
 * 等比缩放函数(以保存的方式实现)
 * @param string $picName 被缩放的处理图片源
 * @param int $maxx 缩放后图片的最大宽度
 * @param int $maxy 缩放后图片的最大高度
 * @param string $pre 缩放后图片名的前缀名
 * @return String 返回后的图片名称(带路径),如a.jpg=>s_a.jpg
 */
function imageNewageUpdateSize($picName,$maxx=100,$maxy=100,$pre="s_"){
    $imageNewageInfo = getimageNewageSize($picName); //获取图片的基本信息
     
    $w = $imageNewageInfo[0];//获取宽度
    $h = $imageNewageInfo[1];//获取高度
     
    //获取图片的类型并为此创建对应图片资源    
    switch($imageNewageInfo[2]){
        case 1: //gif
            $imageNew = imageNewagecreatefromgif($picName);
            break;
        case 2: //jpg
            $imageNew = imageNewagecreatefromjpeg($picName);
            break;
        case 3: //png
            $imageNew = imageNewagecreatefrompng($picName);
            break;
        default:
            die("图片类型错误!");
    }
     
    //计算缩放比例
    if(($maxx/$w)>($maxy/$h)){
        $b = $maxy/$h;
    }else{
        $b = $maxx/$w;
    }
     
    //计算出缩放后的尺寸
    $nw = floor($w*$b);
    $nh = floor($h*$b);
     
    //创建一个新的图像源(目标图像)
    $nimageNew = imageNewagecreatetruecolor($nw,$nh);
         
    //执行等比缩放
    imageNewagecopyresampled($nimageNew,$imageNew,0,0,0,0,$nw,$nh,$w,$h);
     
    //输出图像(根据源图像的类型,输出为对应的类型)
    $picimageNewageInfo = pathimageNewageInfo($picName);//解析源图像的名字和路径信息
    $newpicName= $picimageNewageInfo["dirname"]."/".$pre.$picimageNewageInfo["basename"];
    switch($imageNewageInfo[2]){
        case 1:
            imageNewagegif($nimageNew,$newpicName);
            break;
        case 2:
            imageNewagejpeg($nimageNew,$newpicName);
            break;
        case 3:
            imageNewagepng($nimageNew,$newpicName);
            break;
    }
    //释放图片资源
    imageNewagedestroy($imageNew);
    imageNewagedestroy($nimageNew);
    //返回结果
    return $newpicName;
}
 
//调用
echo imageNewageUpdateSize("./imageNewages/leyangjun.jpg",400,400,"ss_");  //你自己要添加的图片
 
 
 
/**
 * 为一张图片添加上一个logo图片水印(以保存的方式实现)
 * @param string $picName 被处理图片源
 * @param string $logo 水印图片
 * @param string $pre 处理后图片名的前缀名
 * @return String 返回后的图片名称(带路径),如a.jpg=>n_a.jpg
 */
function imageNewageUpdateLogo($picName,$logo,$pre="n_"){
    $picNameimageNewageInfo = getimageNewageSize($picName); //获取图片源的基本信息
    $logoimageNewageInfo = getimageNewageSize($logo); //获取logo图片的基本信息
    //var_dump($logoimageNewageInfo);
    //根据图片类型创建出对应的图片源
    switch($picNameimageNewageInfo[2]){
        case 1: //gif
            $imageNew = imageNewagecreatefromgif($picName);
            break;
        case 2: //jpg
            $imageNew = imageNewagecreatefromjpeg($picName);
            break;
        case 3: //png
            $imageNew = imageNewagecreatefrompng($picName);
            break;
        default:
            die("图片类型错误!");
    }
    //根据logo图片类型创建出对应的图片源
    switch($logoimageNewageInfo[2]){
        case 1: //gif
            $logoimageNew = imageNewagecreatefromgif($logo);
            break;
        case 2: //jpg
            $logoimageNew = imageNewagecreatefromjpeg($logo);
            break;
        case 3: //png
            $logoimageNew = imageNewagecreatefrompng($logo);
            break;
        default:
            die("logo图片类型错误!");
    }
     
 
    //执行图片水印处理                    源图的高-logo图的高       源图的宽-logo图的宽
    imageNewagecopyresampled($imageNew,$logoimageNew,$picNameimageNewageInfo[0]-$logoimageNewageInfo[0],$picNameimageNewageInfo[1]-$logoimageNewageInfo[1],0,0,$logoimageNewageInfo[0],$logoimageNewageInfo[1],$logoimageNewageInfo[0],$logoimageNewageInfo[1]);
     
    //输出图像(根据源图像的类型,输出为对应的类型)
    $picimageNewageInfo = pathimageNewageInfo($picName);//解析源图像的名字和路径信息
    $newpicName= $picimageNewageInfo["dirname"]."/".$pre.$picimageNewageInfo["basename"];
    switch($picNameimageNewageInfo[2]){
        case 1:
            imageNewagegif($imageNew,$newpicName);
            break;
        case 2:
            imageNewagejpeg($imageNew,$newpicName);
            break;
        case 3:
            imageNewagepng($imageNew,$newpicName);
            break;
    }
    //释放图片资源
    imageNewagedestroy($imageNew);
    imageNewagedestroy($logoimageNew);
    //返回结果
    return $newpicName;
}
 
//测试
//echo imageNewageUpdateLogo("./imageNewages/leyangjun.jpg","./imageNewages/logo.png");  //对应添加你的图片,和你的logo水印图片 OK


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。