Php传图缩图,php实现等比例不失真缩放上传图片(转)

本文介绍了一种使用PHP实现的等比例不失真缩放图片的方法,确保无论上传图片尺寸多大,都能自动压缩到指定范围内。通过调整函数参数,可以设置最大宽度和高度,达到理想缩放效果。这种方法在处理大尺寸图片时既节省空间又减少流量消耗。
摘要由CSDN通过智能技术生成

有时上传图片时因为图片太大了,不仅占用空间,消耗流量,而且影响浏(图片的尺寸大小不一)。下面分享一种等比例不失真缩放图片的方法,这样,不管上传的图片尺有多大,都会自动压缩到我们设置尺寸值的范围之内。经过测试,证明实用。

function resizeImage($im,$maxwidth,$maxheight,$name,$filetype)

{

$pic_width = imagesx($im);

$pic_height = imagesy($im);

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

$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);//PHP系统函数

imagecopyresampled($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height);//PHP系统函数

}

else

{

$newim = imagecreate($newwidth,$newheight);

imagecopyresized($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height);

}

$name = $name.$filetype;

imagejpeg($newim,$name);

imagedestroy($newim);

}

else

{

$name = $name.$filetype;

imagejpeg($im,$name);

}

}

//使用方法:

$im=imagecreatefromjpeg("./20140416103023202.jpg");//参数是图片的存方路径

$maxwidth="600";//设置图片的最大宽度

$maxheight="400";//设置图片的最大高度

$name="123";//图片的名称,随便取吧

$filetype=".jpg";//图片类型

resizeImage($im,$maxwidth,$maxheight,$name,$filetype);//调用上面的函数

处理前图片大小:1187*846

图片处理后大小:561*400

处理后的图片名称:123.jpg

写在最后:因为客户要求使用php实现等比例不失真缩放上传图片,本来要自己写的,但百度一下发现了这个函数,于是乎就拿来用了,呵呵,省了我不少时间啊!其实我们想到的一些新功能,网络早已有之,犹其在中国,很多的创新,其实都是从国外翻译过来的,在代码这方面,老外的脑子确实很好使。上面的函数,作者不详,但还是要感谢作者的辛苦付出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值