PHP 图片压缩(不损伤图片清晰度)

 
前段时间需要申请一个账号,需要实名制,于是拿手机便拍了张照片,本想直接上传就好了。没想到上传图片竟然有限制(不能大于1M),然后我看了下我照片的大小竟然有1.25M。
 
于是在网上找了段PHP程序,实现压缩图片。压缩之后图片比原图小了一半,而且图片清晰度还没有发生变化。
 
下面贴出代码:
 
<?php
/**
* 等比例压缩图片
* @param String $src_imagename 源文件名 比如 “source.jpg”
* @param int $maxwidth 压缩后最大宽度
* @param int $maxheight 压缩后最大高度
* @param String $savename 保存的文件名 “d:save”
* @param String $filetype 保存文件的格式 比如 ”.jpg“
* @author Yovae <yovae@qq.com>
* @version 1.0
*/
function resizeImage($src_imagename,$maxwidth,$maxheight,$savename,$filetype)
{
$im=imagecreatefromjpeg($src_imagename);
$current_width = imagesx($im);
$current_height = imagesy($im);

if(($maxwidth && $current_width > $maxwidth) || ($maxheight && $current_height > $maxheight))
{
if($maxwidth && $current_width>$maxwidth)
{
$widthratio = $maxwidth/$current_width;
$resizewidth_tag = true;
}
if($maxheight && $current_height>$maxheight)
{
$heightratio = $maxheight/$current_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 = $current_width * $ratio;
$newheight = $current_height * $ratio;
if(function_exists("imagecopyresampled"))
{
$newim = imagecreatetruecolor($newwidth,$newheight);
imagecopyresampled($newim,$im,0,0,0,0,$newwidth,$newheight,$current_width,$current_height);
}
else
{
$newim = imagecreate($newwidth,$newheight);
imagecopyresized($newim,$im,0,0,0,0,$newwidth,$newheight,$current_width,$current_height);
}
$savename = $savename.$filetype;
imagejpeg($newim,$savename);
imagedestroy($newim);
}
else
{
$savename = $savename.$filetype;
imagejpeg($im,$savename);
}
}
resizeImage('./IMG_0054.JPG',2448,3264,'sfz','.jpg');
//IMG_0054.JPG
?>

推荐一个在线压缩图片网站:
https://tinypng.com/
 
 
 

0 个评论

要回复文章请先登录注册