个人思路:
先获取目标图片,获取到图片信息,将图片宽高进行缩放,创建新的画布,用新的宽高生成新的图片。图片就变小了。
个人声名:
仅代表个人发布此贴,接受整改意见,不接受“喷”。
希望对新手或者此功能满足开发需求的人有所帮助。
<?php
//typearr存的是一些图片的格式,用作下文getimagesize()获取图片信息中的图片格式进行比对
$typearr = array("gif", "jpeg", "png", "swf", "psd", "bmp");
$img = ‘test.jpeg’; //一个可检查路径的图片
list($width, $height, $type, $attr) = getimagesize($img); //获取图片信息
/**-----------------------------------------------------------------------------------------------------------------------------------------------------*/
//对imagecreatefrom 系列函数进行拼接从文件或 URL 载入一幅图像,成功返回图像资源,失败则返回一个空字符串
$func = "imagecreatefrom" . $typearr[$type - 1];
$image = $fun($img);
/**-----------------------------------------------------------------------------------------------------------------------------------------------------*/
//创建一个新的真彩色图像
$new_width = $width * 0.5;
$new_height = $height * 0.5;
$image_thump = imagecreatetruecolor($new_width, $new_height);
/**-----------------------------------------------------------------------------------------------------------------------------------------------------*/
//图像处理(各个参数的含义很容易百度到)
imagecopyresampled($image_thump, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
/**-----------------------------------------------------------------------------------------------------------------------------------------------------*/
//拼接一个image系列函数(将图片输出到浏览器或文件)
$imgfunc= "image" . $typearr[$type - 1];
$imgfunc($image_thump,“test.jpeg”); //这里我选择原图覆盖
//销毁图像资源
imagedestroy($image);
注:因为是二开项目中的上传图片功能,我只是截取了封装中的压缩部分,有需要的话可以自行封装。
建议变量为:图片和代码片段中的宽高*0.5的那个0.5