• 微信
您当前的位置:首页  > 文章 >  用PHP写的一个压缩图片的函数,可批量压缩

用PHP写的一个压缩图片的函数,可批量压缩

作者:admin 时间:2023-05-26 阅读数:1人

将如下代码放到PHP文件里,定义好图片目录,运行PHP文件即可

$ddd="dirname";//定义要压缩的文件夹目录
echo edir($ddd);
function edir($ddir){
$dir=opendir($ddir);
if($dir){
while($file=readdir($dir)){
if($file!="."&&$file!=".."&& !is_dir($dir."/".$file))$zarr[]=$file;}
}
foreach ($zarr as $v){
getThumb($ddir."/".$v,400,400);
}
}
function resizeImage($im, $dest, $maxwidth, $maxheight) {
$img = getimagesize($im);
switch ($img[2]) {
case 1:
$im = @imagecreatefromgif($im);
break;
case 2:
$im = @imagecreatefromjpeg($im);
break;
case 3:
$im = @imagecreatefrompng($im);
break;
}

$pic_width = imagesx($im);
$pic_height = imagesy($im);
$resizewidth_tag = false;
$resizeheight_tag = false;
if (($maxwidth && $pic_width > $maxwidth) || ($maxheight && $pic_height > $maxheight)) {
if ($maxwidth && $pic_width > $maxwidth) {
$widthratio = $maxwidth / $pic_width;
$resizewidth_tag = true;
}

if ($maxheight && $pic_height > $maxheight) {
$heightratio = $maxheight / $pic_height;
$resizeheight_tag = true;
}

if ($resizewidth_tag && $resizeheight_tag) {
if ($widthratio < $heightratio)
$ratio = $widthratio;
else
$ratio = $heightratio;
}

if ($resizewidth_tag && !$resizeheight_tag)
$ratio = $widthratio;
if ($resizeheight_tag && !$resizewidth_tag)
$ratio = $heightratio;
$newwidth = $pic_width * $ratio;
$newheight = $pic_height * $ratio;

if (function_exists("imagecopyresampled")) {
$newim = imagecreatetruecolor($newwidth, $newheight);
imagecopyresampled($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $pic_width, $pic_height);
} else {
$newim = imagecreate($newwidth, $newheight);
imagecopyresized($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $pic_width, $pic_height);
}

imagejpeg($newim, $dest);
imagedestroy($newim);
} else {
imagejpeg($im, $dest);
}
}
/**
* 图片压缩处理
* @param string $sFile 源图片路径
* @param int $iWidth 自定义图片宽度
* @param int $iHeight 自定义图片高度
* @return string 压缩后的图片路径
*/
[erphpdown] function getThumb($sFile,$iWidth,$iHeight){ //图片公共路径 $public_path = ""; //判断该图片是否存在 if(!file_exists($public_path.$sFile)) return $sFile; //判断图片格式(图片文件后缀) $extend = explode("." , $sFile); $attach_fileext = strtolower($extend[count($extend) - 1]); if (!in_array($attach_fileext, array("jpg","png","jpeg"))){ return ""; } //压缩图片文件名称 $sFileNameS = str_replace(".".$attach_fileext, "_".$iWidth."_".$iHeight.".".$attach_fileext, $sFile); //判断是否已压缩图片,若是则返回压缩图片路径 if(file_exists($public_path.$sFileNameS)){ return $sFileNameS; } //生成压缩图片,并存储到原图同路径下 resizeImage($public_path.$sFile, $public_path.$sFileNameS, $iWidth, $iHeight); if(!file_exists($public_path.$sFileNameS)){ return $sFile; }else{ unlink($sFile); rename($sFileNameS,$sFile); return $sFile; } //return $sFileNameS; } [/erphpdown]

声明

源码下载不顺利,比如源码在百度网盘的有时会被无故取消等,请联系QQ:46667551
本站大部分下载资源收集于网络,但除特别说明之外,基本全部亲自测试可用!
但由于某些源码的更新迭代,比如微信小程序官方接口的变动等原因,
如时间过长,可能会造成本可以使用的代码出现问题,下载前请斟酌!
本站资源仅供学习和交流使用,版权归原作者所有,请在下载后24小时之内自觉删除。
若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,使用者自行承担,概与本站无关。

原文链接:https://www.dnwfb.com//5874.html,转载请注明出处