码迷,mamicode.com
首页 > 其他好文 > 详细

压缩图片 待验证

时间:2016-11-27 11:50:12      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:ret   iat   图像   jpeg   压缩   desc   files   pre   二进制   



/**
* @desc 压缩图片
* @param string $src 图片源地址(全路径)
* @param int $dst_w 目标宽度
* @param int $dst_h 目标高度
* @param string $dst 目标地址(全路径) 如果指定,则把缩放后的图片直接写入到$dst指定的路径;否则则返回图片的二进制值
* @param boolean $isHold 是否锁定原图的高宽比。如果false(不锁定),则严格按照指定的$dst_w和$dst_h生成新的图片
* @param string $format 缩放后图片的格式。如果不指定,则使用原图的格式
* @return InternalResultTransfer
*/
static function compress($src, $dst_w, $dst_h, $dst = null, $isHold = false, $format = null) {
if (empty($src)) {
return ResultWrapper::fail("请指定原图");
}
if (!file_exists($src)) {
return ResultWrapper::fail("{$src} 该图片文件不存在");
}

$objImagick = new \Imagick();
$objImagick ->readImage($src);
if ($isHold) {
$src_h = $objImagick->getImageHeight();
$src_w = $objImagick->getImageWidth();
/// 源图片比目标图片要小
if ($src_w < $dst_w && $src_h < $dst_h) {
$hratio = $dst_h / $src_h;
$wratio = $dst_w / $src_w;
$ratio = $hratio < $wratio ? $hratio : $wratio;
$dst_h = $src_h * $ratio;
$dst_w = $src_w * $ratio;
$isHold = false;
}
}
$objImagick->resizeImage($dst_w, $dst_h, \Imagick::FILTER_CATROM, 1, $isHold);

if (is_null($format)) {
$format = $objImagick->getImageFormat();
}
$objImagick->setImageFormat($format);
// 压缩
$objImagick->setImageCompression(\Imagick::COMPRESSION_JPEG);
$a = $objImagick->getImageCompressionQuality() * 0.75;
if ($a == 0) {
$a = 75;
}
$objImagick->setImageCompressionQuality($a);
$objImagick->stripImage(); // Strips an image of all profiles and comments

if (is_null($dst)) {// 返回图像内容
$data = $objImagick->getImageBlob();
$ret = ResultWrapper::success($data);
} else {
$tmpWriteResult = $objImagick->writeImage($dst);
if ($tmpWriteResult) {
$ret = ResultWrapper::success(array(
‘w‘ => $objImagick->getImageWidth(),
‘h‘ => $objImagick->getImageHeight(),
));
} else {
$ret = ResultWrapper::fail("写入目标地址失败");
}
}
$objImagick->clear(); // Clears all resources associated to Imagick object
$objImagick->destroy();
return $ret;
}

压缩图片 待验证

标签:ret   iat   图像   jpeg   压缩   desc   files   pre   二进制   

原文地址:http://www.cnblogs.com/bandbandme/p/6106084.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!