在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
本例子介绍使用php自带的GD库对png和jpg图片进行放大和缩小处理
<?php
主函数/** *主函数: 获取图片信息,准备参数 */ 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); }
|
2022-08-30
2022-08-17
2022-11-06
2022-08-17
2022-08-16
请发表评论