博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
压缩图片 待验证
阅读量:5210 次
发布时间:2019-06-14

本文共 2509 字,大约阅读时间需要 8 分钟。

 

 

/**     * @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; }

 

转载于:https://www.cnblogs.com/bandbandme/p/6106084.html

你可能感兴趣的文章
页面商城总结(一)——HTML部分
查看>>
git的使用
查看>>
Win7下用IIS发布网站
查看>>
201671010458 种兴达 实验三作业互评与改进报告
查看>>
Leetcode1000 合并石头的最低成本 区间DP
查看>>
网页换肤
查看>>
Rsync原理介绍及配置应用
查看>>
利用Solr服务建立的站内搜索雏形
查看>>
VS2010调试PostgreSQL9.4.0(网络资源+个人经验)(转)
查看>>
批处理创建文件夹
查看>>
[原创] web_custom_request 与 Viewstate
查看>>
第八周作业
查看>>
[Servlet3.0新特性]注解替代配置文件
查看>>
在sliverlight 客户端实现DataTable的尝试,让自定义DataGrid能够轻松绑定DataTable
查看>>
clean code 第一章笔记
查看>>
oracle11g OEM无法连接到数据库实例解决办法
查看>>
java包命名规则
查看>>
iOS后台如何保持socket长连接和数据传输
查看>>
IOS视频播放器的制作
查看>>
TaobaoVM
查看>>