『typecho图片上传压缩』
最近一直在找能用的图片上传压缩的插件,却一直没找到适合自己用的!
所以干脆自己动手吧,结果研究完才发现几行代码就搞定的事。而且压缩效果不错,压缩完几乎没什么损失,暂时只写了jpg文件,png的需要多几行代码转为jpg后再压缩,否则图片损失很严重,够自己用也就懒得多研究了。也懒得写进插件,毕竟真的很简单,直接写到upload.php文件里就ok的
具体如下:
找到系统文件:var/Widget/upload.php
上传文件处理函数:uploadHandle()
修改文件处理函数:modifyHandle()
在对应位置加上以下代码保存
/**
* 图片压缩 默认大于1M时会进行压缩,可自行修改
* 支持jpg图片,如果要压缩png,需要添加相关代码先将png转为jpg再压缩
**/
if ($file['size'] > 1 * 1024 * 1024 && ($ext == "jpg" || $ext == "jpeg")) {
list($width, $height, $type, $attr) = getimagesize($path);
$image = imagecreatefromjpeg($path);
$newimage = imagecreatetruecolor($width,$height);
imagecopyresampled($newimage, $image,0,0,0,0,$width,$height,$width,$height);
imagejpeg($newimage,$path);
imagedestroy($newimage);
imagedestroy($image);
$file['size'] = filesize($path);
}
//以下是原文件内的对应位置
if (!isset($file['size'])) {
$file['size'] = filesize($path);
}