php缩放处理png和jpg图片

本例子介绍使用php自带的GD库对png和jpg图片进行放大和缩小处理

$target_width = 120;  //目标图片宽度
$target_height = 150;   //目标图片高度
$target_img = 'me.jpg';     //剪切图片

deal($target_width,$target_height,$target_img);
/**
 * 获取图片信息,准备参数
 */
function deal($target_width,$target_height,$target_img){
    $img_info=getimagesize($target_img);  // 获取原图尺寸

    $original_width=$img_info[0];       //原图片宽度
    $original_height=$img_info[1];       //原图片高度
    $original_mime=$img_info['mime'];
    $type=substr($original_mime,6);       //原本$original_mime值为'image/类型',通过从第六位字符开始截取得到图片类型


    $target_scale = $target_height/$target_width; //目标图像长宽比

    $original_scale = $original_height/$original_width; // 原图片长宽比

    if ($original_scale>=$target_scale){  // 过高
        $w = intval($src_w);
        $h = intval($target_scale*$w);

        $x = 0;
        $y = ($original_height - $h)/3;
    } else {                              // 过宽
        $h = intval($original_height);
        $w = intval($h/$target_scale);

        $x = ($original_width - $w)/2;
        $y = 0;
    }

    switch($type){
        case 'jpeg':
            dealjpg($target_img, $w, $h,$x, $y, $original_width, $original_height, $target_width, $target_height);
            break;
        case 'png':
            dealpng($target_img, $w, $h,$x, $y, $original_width, $original_height, $target_width, $target_height);
            break;
        default:
            echo "请确认需要处理图片类型是否正确";
            break;
    }
}


/**
 * 处理jpg
 */
function dealjpg($target_img, $w, $h,$x, $y, $original_width, $original_height, $target_width, $target_height){
    // 剪裁
    $source=imagecreatefromjpeg($target_img);  //创建一个新图象

    $croped=imagecreatetruecolor($w, $h);      //新建一个真彩色图像
    imagecopy($croped, $source, 0, 0, $x, $y, $original_width, $original_height); //拷贝图像的一部分

    // 缩放
    $scale = $target_width / $w;
    $target = imagecreatetruecolor($target_width, $target_height);   //新建一个真彩色图像
    $final_w = intval($w * $scale);
    $final_h = intval($h * $scale);
    imagecopyresampled($target, $croped, 0, 0, 0, 0, $final_w,$final_h, $w, $h);    //重采样拷贝部分图像并调整大小

    // 保存
    $timestamp = time();
    imagejpeg($target, "$timestamp.jpg");

    imagedestroy($target);
}

/**
 * 处理png
 */
function dealpng($target_img,$w,$h,$x,$y,$original_width,$original_height,$target_width,$target_height){
    // 剪裁
    $source=imagecreatefrompng($target_img);

    $croped=imagecreatetruecolor($w, $h);      //新建一个真彩色图像
    imagecopy($croped, $source, 0, 0, $x, $y, $original_width, $original_height); //拷贝图像的一部分

    // 缩放
    $scale = $target_width / $w;
    $target = imagecreatetruecolor($target_width, $target_height);   //新建一个真彩色图像
    $final_w = intval($w * $scale);
    $final_h = intval($h * $scale);
    imagecopyresampled($target, $croped, 0, 0, 0, 0, $final_w,$final_h, $w, $h);    //重采样拷贝部分图像并调整大小

    // 保存
    $timestamp = time();

    imagepng($target, "$timestamp.png");
    imagedestroy($target);
}

  

猜你喜欢

转载自www.cnblogs.com/legendheng/p/9130786.html