<?php
/**
* created by phpstorm.
* user: liuft
* date: 2016/1/22
* time: 11:51
*/
date_default_timezone_set('prc');
/**
* jpg压缩成webp格式
* @param string $dir [webp图片的存储路径]
* @param int $n [压缩图片的张数]
* @param int $prefix [图片名称的后缀]
* @param int $type [裁剪图片的类型]
*/
function start_multi_jpg_transform_webp($dir = '', $n = 1, $prefix = '_a', $type = 6)
{
global $jpg_dir;
if (!is_dir($dir)) {
mkdir($dir, 0755);
chmod($dir, 0755);
}
if (strrchr($jpg_dir, '/') != '/') {
$jpg_dir = $jpg_dir . '/';
}
if (strrchr($dir, '/') != '/') {
$dir = $dir . '/';
}
for ($j = 1; $j <= $n; $j++) {
$file_name = $jpg_dir . $j . '.jpg';//要裁剪的图片
$new_jpg_path = $dir . $j . '_' . $prefix;//新的图片路径
createimg($file_name, $new_jpg_path . '.jpg', $type, 0);//裁剪生成jpg图片
//生成webp格式的图片
$new_q = 0;
$m = 0;
for ($i = 11; $i getimagegeometry();
if ($size['width'] > $size['height']) {
$left = round(($size['width'] - $size['height']) / 2);
$resource->cropimage($size['height'], $size['height'], $left, 0);
} else if ($size['width'] < $size['height']) {
$top = round(($size['height'] - $size['width']) / 2);
$resource->cropimage($size['width'], $size['width'], 0, $top);
}
if ($type == 1) {
$resource->resizeimage(210, 210, imagick::filter_catrom, 1.0, true);
} elseif ($type == 2) {
$resource->resizeimage(720, 268, imagick::filter_catrom, 1.0, true);
} elseif ($type == 3) {
$resource->resizeimage(298, 198, imagick::filter_catrom, 1.0, true);
} elseif ($type == 4) {
$resource->resizeimage(338, 365, imagick::filter_catrom, 1.0, true);
} elseif ($type == 5) {
$resource->resizeimage(425, 425, imagick::filter_catrom, 1.0, true);
} elseif ($type == 6) {
$resource->resizeimage(150, 150, imagick::filter_catrom, 1.0, true);
} elseif ($type == 7) {
$resource->resizeimage(640, 640, imagick::filter_catrom, 1.0, true);
} elseif ($type == 8) {
$resource->resizeimage(32, 32, imagick::filter_catrom, 1.0, true);
}
} catch (exception $e) {
echo $e->getmessage();
exit;
}
}
$resource->setimagecompression(imagick::compression_jpeg);
$current = $resource->getimagecompressionquality();
if ($is_compression) {
$resource->setimagecompressionquality($current);//压缩质量
}
if (!empty($new_jpg_filename_path)) {
$jpg_file_name_path = $new_jpg_filename_path;
}
$resource->writeimage($jpg_file_name_path);
$resource->clear();
$resource->destroy();
}
/**
* jpg格式转换成webp格式
* @param $jpg_img_path [jpg图片的真实路径]
* @param $webp_img_path [webp图片的真实路径]
* @param int $q [图片的压缩质量]
*/
function do_jpg_transform_webp($jpg_img_path, $webp_img_path, $q = 65)
{
exec("cwebp -q {$q} {$jpg_img_path} -o $webp_img_path");
}
/**
* 获取图片的质量
* @param $filename [图片的具体路径]
* @return int[图片的质量]
*/
function get_img_quality($filename)
{
$resource = new imagick($filename);
$resource->setimagecompression(imagick::compression_jpeg);
$current = $resource->getimagecompressionquality();
$resource->clear();
$resource->destroy();
if (empty($current)) {
$current = 65;
}
$resource->clear();
$resource->destroy();
return $current;
}
//调用方式
//原始图片,连续用数字命名 !如 1~10张图片,就1.jpg~10.jpg
$jpg_dir = './image/';//[准备压缩的jpg图片路径,必须设置!]
//压缩出webp格式的图片
start_multi_jpg_transform_webp('./webp', 1, '_a', 0);
start_multi_jpg_transform_webp('./webp1', 1, '_a', 1);
start_multi_jpg_transform_webp('./webp2', 1, '_a', 2);
start_multi_jpg_transform_webp('./webp3', 1, '_a', 3);