<?php
echo get_thumb('img/1.jpg');
/**
* 图片压缩处理
* @param string $sFile 源图片路径
* @param int $iWidth 自定义图片宽度
* @param int $iHeight 自定义图片高度
* @param bool $format 文件格式是否为 源文件_宽度_高度.后缀
* @return string 压缩后的图片路径
*/
function get_thumb($sFile, $iWidth = '', $iHeight = '', $format = false)
{
$suffix = ['jpg', 'png', 'jpeg', 'webp'];
//判断该图片是否存在
if (!file_exists($sFile)) return $sFile;
//判断图片格式(图片文件后缀)
$extend = explode(".", $sFile);
$attach_fileext = strtolower($extend[count($extend) - 1]);
if (!in_array($attach_fileext, $suffix)) {
return '支持的文件后缀:'.implode(',',$suffix);
}
if (!$iWidth && !$iHeight) {
$imageInfo = getImageInfo($sFile);
$iWidth = $imageInfo['width'];
$iHeight = $imageInfo['height'];
}
//压缩图片文件名称
if($format){
$sFileNameS = str_replace("." . $attach_fileext, "_" . $iWidth . '_' . $iHeight . '.' . $attach_fileext, $sFile);
}else{
$sFileNameS = $sFile;
}
//生成压缩图片,并存储到原图同路径下
resize_image($sFile, $sFileNameS, $iWidth, $iHeight);
if (!file_exists($sFileNameS)) {
return $sFile;
}
return $sFileNameS;
}
/**
* 生成图片
* @param string $im 源图片路径
* @param string $dest 目标图片路径
* @param int $maxwidth 生成图片宽
* @param int $maxheight 生成图片高
*/
function resize_image($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;
case 18:
$im = @imagecreatefromwebp($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);
}
imagesavealpha($newim,true);
imagewebp($newim,$dest);
imagedestroy($newim);
} else {
imagesavealpha($im,true);
imagewebp($im,$dest);
imagedestroy($im);
}
}
/**
* 获取图片信息
* @param string $img 源图片路径
* @return array 图片信息
*/
function getImageInfo($img)
{
$img_info = getimagesize($img);
switch ($img_info[2]) {
case 1:
$imgtype = "GIF";
break;
case 2:
$imgtype = "JPG";
break;
case 3:
$imgtype = "PNG";
break;
}
$img_type = $imgtype;
$img_size = ceil(filesize($img) / 1000) . "k"; //获取文件大小
$new_img_info = array(
"width" => $img_info[0],
"height" => $img_info[1],
"type" => $img_type,
"size" => $img_size
);
return $new_img_info;
}
PHP实现图片压缩
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理(doubaiwang@126.com)。
-
免费下载或者VIP会员资源能否直接商用?本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。
-
提示下载完但解压或打开不了?1.最常见的情况是下载不完整:可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。 2.解压失败:密码输入错误,请手动输入密码;不可在手机上解压,请务必使用pc端进行解压操作。 若排除上述情况,可在对应资源底部留言,或在“个人中心”中发起工单。
-
找不到素材资源介绍文章里的示例图片?对于会员专享、整站源码、程序插件、网站模板、网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
-
付款后无法显示下载地址或者无法查看内容?如果您已经成功付款但是网站没有弹出成功提示,请联系站长(doubaiwang@126.com)提供付款信息为您处理,或在“个人中心”中发起工单。
-
购买该资源后,可以退款吗?源码素材属于虚拟商品,具有可复制性,可传播性,一旦授予,不接受任何形式的退款、换货要求。请您在购买获取之前确认好是您所需要的资源。
评论(0)