失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > php 缩略图 等比例 不失真 PHP自适应宽高度等比例缩略图函数 (无裁切)

php 缩略图 等比例 不失真 PHP自适应宽高度等比例缩略图函数 (无裁切)

时间:2023-02-18 22:56:45

相关推荐

php 缩略图 等比例 不失真 PHP自适应宽高度等比例缩略图函数 (无裁切)

对于产品类或者图片类网站来讲,缩略图是一个很重要的应用。其实说来很简单,也就是把大图缩放成一个小图,用于图片的列表展现,这样能够达到用户快速浏览的目的,又能节省带宽。php

若是是等比例缩放,好比小图是大图的1/2或者1/5之类的,比较容易处理。但有时候咱们须要处理大量不一样尺寸的大图,让其生成固定宽高度的缩略图。那就须要一种自适应的方式缩放,就是大图在缩放的过程当中,若是宽度先达到缩略图的宽度,那大图多余的高度就被裁剪掉;若是高度先达到缩略图的高度,那大图多余的宽度就被裁剪掉。这样处理既让缩略图不失真变形,又能最大化保留大图内容。函数

今天用PHP写了一个缩略图函数,能够达到这种自适应的等比例缩放效果。网站

/*

缩略图函数

做者:影子超

博客:

邮箱:superl3c@

参数说明:

$w----------缩略图宽度

$h----------缩略图高度

$dst_path---缩略图路径

$src_path---源图像路径

*/

functionzoom_image($w,$h,$dst_path,$src_path){

if(!file_exists($src_path)){

die("源图像文件未找到!");

}

list($src_w,$src_h,$src_type)=getimagesize($src_path);

switch($src_type){

case1:$src_im=@imagecreatefromgif($src_path);break;

case2:$src_im=@imagecreatefromjpeg($src_path);break;

case3:$src_im=@imagecreatefrompng($src_path);break;

default:die("不能识别的图像类型!");

}

$dst_im=@imagecreatetruecolor($w,$h);

$scale_w=$src_w/$w;

$scale_h=$src_h/$h;

if($scale_w>$scale_h){

$src_w=$scale_h*$w;

}else{

$src_h=$scale_w*$h;

}

imagecopyresampled($dst_im,$src_im,0,0,0,0,$w,$h,$src_w,$src_h);

switch($src_type){

case1:imagegif($dst_im,$dst_path,80);break;

case2:imagejpeg($dst_im,$dst_path,80);break;

case3:imagepng($dst_im,$dst_path,80);break;

}

imagedestroy($dst_im);

imagedestroy($src_im);

}

?>spa

函数共有4个参数,分别是你想生成的缩略图的宽度、高度、存储的路径以及大图的文件地址(能够是URL地址^_^)code

调用方式如:zoom_image(100,100,"abc_small.jpg","abc_big.jpg"),调用无返回,直接将处理后的小图存放在指定路径下。blog

//生成缩略图(带裁切)图片

function thum_img($img,$small_img){get

$thumb = imagecreatetruecolor(100, 100);博客

$bg = imagecolorallocate($thumb, 255, 255, 255);产品

imagefilledrectangle($thumb, 0, 0, 100, 100, $bg);

$i = 0;

$j1 = $j2 = 190;

$imgarr = getimagesize($img);

if($imgarr['0']>$imgarr['1']){

$j1 = $imgarr['0']/($imgarr['1']/$j2);

$i = ceil(($j2-$j1)/2);

}elseif($imgarr['0']<=$imgarr['1']){

$j2 = $imgarr['1']/($imgarr['0']/$j2);

}

if($imgarr['mime']=='image/gif'){

$source = imagecreatefromgif($img);

}elseif($imgarr['mime']=='image/jpeg'){

$source = imagecreatefromjpeg($img);

}elseif($imgarr['mime']=='image/png'){

$source = imagecreatefrompng($img);

}elseif($imgarr['mime']=='image/bmp'){

$source = imagecreatefromwbmp($img);

}

imagecopyresampled($thumb, $source, $i, 0, 0, 0, $j1, $j2, $imgarr[0], $imgarr[1]);

return imagejpeg($thumb,$small_img);

}

如果觉得《php 缩略图 等比例 不失真 PHP自适应宽高度等比例缩略图函数 (无裁切)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。