加入我们
如果您有建站需求需要详谈可以留言给我们,我们将会第一时间给您取得联系,还可以添加QQ 1340828870 或者微信 mixinwangluo 与我们实时交谈
有没有做项目的时候发现一些图片需要在封面缩略图展示?
如果说是外链的云储存有图片的处理样式、但是本地上传需要怎么处理呢
接下来贴上代码
创建一个函数
/**
* @param $srcImage 原图片路径
* @param $toFile 裁剪后图片路径
* @param int $maxWidth 裁剪最大的宽度
* @param int $maxHeight 裁剪后最大的高度
* @param int $imgQuality 图片的质量
* @return bool|string|void
*/
function resize($srcImage,$toFile,$maxWidth = 640,$maxHeight = 480,$imgQuality=80)
{
list($width, $height, $type, $attr) = getimagesize($srcImage);
if($width < $maxWidth || $height < $maxHeight) return ;
switch ($type) {//判断图片类别
case 1: $img = imagecreatefromgif($srcImage); break;
case 2: $img = imagecreatefromjpeg($srcImage); break;
case 3: $img = imagecreatefrompng($srcImage); break;
}
$scale = min($maxWidth/$width, $maxHeight/$height);
if($scale < 1) {
$newWidth = floor($scale*$width);
$newHeight = floor($scale*$height);
$newImg = imagecreatetruecolor($newWidth, $newHeight);
imagecopyresampled($newImg, $img, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
$newName = "";
$toFile = preg_replace("/(.gif|.jpg|.jpeg|.png)/i","",$toFile);
switch($type) {
case 1: if(imagegif($newImg, "$toFile$newName.gif", $imgQuality))
return "$toFile$newName.gif"; break;
case 2: if(imagejpeg($newImg, "$toFile$newName.jpg", $imgQuality))
return "$toFile$newName.jpg"; break;
case 3: if(imagepng($newImg, "$toFile$newName.png", $imgQuality))
return "$toFile$newName.png"; break;
default: if(imagejpeg($newImg, "$toFile$newName.jpg", $imgQuality))
return "$toFile$newName.jpg"; break;
}
imagedestroy($newImg);
}
imagedestroy($img);
return false;
}
这里用thinkphp的方法为例
public function img()
{
$url=preg_replace("/(.*)".$_SERVER['HTTP_HOST']."\//i","",input('url'));
$w=dingyi(input('w'),'640');
$h=dingyi(input('h'),'480');
$imgQuality=dingyi(input('img'),'70');
$toFile='uploads/runtime/'.$w.'_'.$h.'_'.preg_replace("/\//i","",$url);//uploads/runtime是路径没有需要创建
// 判断是否本地
if (parse_url(input('url'))['host']==$_SERVER['HTTP_HOST']) {
if(is_file('./'.$toFile)){
$img = $toFile;
}else{
$img = resize($url,$toFile,$w,$h,'100');
if(!$img){
$img = $url;
}
}
} else {
$img = input('url').'?imageView2/2/w/'.$w.'/h/'.$h.'/format/jpg/q/'.$imgQuality.'';
}
$info = getimagesize($img);
$imgExt = image_type_to_extension($info[2], false); //获取文件后缀
$fun = "imagecreatefrom{$imgExt}";
$imgInfo = $fun($img);
header("Content-type: image/png");
$quality = 100;
if($imgExt == 'png') $quality = 10;
$getImgInfo = "image{$imgExt}";
$getImgInfo($imgInfo, null, $quality);
imagedestroy($imgInfo);
}
然后调用这个方法
<img src="您的方法地址?url=图片地址&w=宽度&h=高度&img=图片的质量1-100">
这个压缩裁剪图片如果是本地的图片就按照自己设置的大小进行、如果是远程七牛就用七牛的方法进行
这就是php把图片进行压缩裁剪并且输出的全部内容
如果您有建站需求需要详谈可以留言给我们,我们将会第一时间给您取得联系,还可以添加QQ 1340828870 或者微信 mixinwangluo 与我们实时交谈