php图片合并png保存图片大小,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); //调用处理jpg函数

break;

case 'png':

dealpng($target_img, $w, $h,$x, $y, $original_width, $original_height, $target_width, $target_height); //调用处理png函数

break;

default:

echo "请确认需要处理图片类型是否正确";

break;

}

}

处理jpg函数

/**

* 处理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函数

/**

* 处理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);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值