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_UNDEFINED, 1, $isHold); if (is_null($format)) { $format = $objImagick->getImageFormat(); } $objImagick->setImageFormat($format); 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->destroy(); return $ret; } /** * @desc 图片格式转换 * @param string $source 源图地址 * @param string $destina 保存地址 * @param sring $format 保存格式 (JPG、JPEG、PNG) * @return ResultWrapper */ static public function transformFormat($source, $destina = null, $format) { if (empty($source)) { return ResultWrapper::fail('请指定原图路径'); } if (empty($format)) { return ResultWrapper::fail('请指定图片保存的格式'); } $objImagick = new \Imagick(); $objImagick->readimage($source); $objImagick->setformat($format); if ($destina === null) { $data = $objImagick->getImageBlob(); $result = ResultWrapper::success($data); } else { if ($objImagick->writeImage($destina)) { $result = ResultWrapper::success(); } } return $result; } }