600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > php使用imagick模块实现图片缩放 裁剪 压缩示例

php使用imagick模块实现图片缩放 裁剪 压缩示例

时间:2018-08-27 16:00:27

相关推荐

php使用imagick模块实现图片缩放 裁剪 压缩示例

php教程|php手册

imagick模块,图片缩放

php教程-php手册

仿猎奇天下源码,vscode多行移动,安装的ubuntu怎样调分辨率,tomcat应用发布,生成SQLite3,苹果cms 解析插件,现如今火的前端框架,爬虫源代码干啥的,php安装图解,江西seo价钱,上传电影网站源码,静态网页下载,dw响应式网站模板下载lzw

这篇文章主要介绍了php使用imagick模块实现图片缩放、裁剪、压缩示例,需要的朋友可以参考下

html填色游戏源码,vscode添加到鼠标右键,ubuntu看caj,tomcat后台默认密码,爬虫代理原理,intraweb php,六安网站seo优化公司,php网站分类目录源码lzw

券直播源码,ubuntu机器突然掉线,tomcat批处理启动失败,可爱爬虫代码,验证php安装版本,谷歌seo新手入门seo顾问lzw

PHP 使用Imagick模块 缩放,,裁剪,压缩图片 包括gif图片

缩放 裁剪

复制代码 代码如下:

/**

* 图片裁剪

* 裁剪规则:

* 1. 高度为空或为零 按宽度缩放 高度自适应

* 2. 宽度为空或为零 按高度缩放 宽度自适应

*3. 宽度,高度到不为空或为零 按宽高比例等比例缩放裁剪 默认从头部居中裁剪

* @param number $width

* @param number $height

*/

public function resize($width=0, $height=0){

if($width==0 && $height==0){

return;

}

$color = ”;// ‘rgba(255,255,255,1)’;

$size = $this->image->getImagePage ();

//原始宽高

$src_width = $size [‘width’];

$src_height = $size [‘height’];

//按宽度缩放 高度自适应

if($width!=0 && $height==0){

if($src_width>$width){

$height = intval($width*$src_height/$src_width);

if ($this->type == ‘gif’) {

$this->_resizeGif($width, $height);

}else{

$this->image->thumbnailImage ( $width, $height, true );

}

}

return;

}

//按高度缩放 宽度自适应

if($width==0 && $height!=0){

if($src_height>$height){

$width = intval($src_width*$height/$src_height);

if ($this->type == ‘gif’) {

$this->_resizeGif($width, $height);

}else{

$this->image->thumbnailImage ( $width, $height, true );

}

}

return;

}

//缩放的后的尺寸

$crop_w = $width;

$crop_h = $height;

//缩放后裁剪的位置

$crop_x = 0;

$crop_y = 0;

if(($src_width/$src_height) < ($width/$height)){

//宽高比例小于目标宽高比例 宽度等比例放大按目标高度从头部截取

$crop_h = intval($src_height*$width/$src_width);

//从顶部裁剪 不用计算 $crop_y

}else{

//宽高比例大于目标宽高比例 高度等比例放大按目标宽度居中裁剪

$crop_w = intval($src_width*$height/$src_height);

$crop_x = intval(($crop_w-$width)/2);

}

if ($this->type == ‘gif’) {

$this->_resizeGif($crop_w, $crop_h, true, $width, $height,$crop_x, $crop_y);

} else {

$this->image->thumbnailImage ( $crop_w, $crop_h, true );

$this->image->cropImage($width, $height,$crop_x, $crop_y);

}

}

针对gif图片的处理方法

复制代码 代码如下:

/**

* 处理gif图片 需要对每一帧图片处理

* @param unknown $t_w 缩放宽

* @param unknown $t_h 缩放高

* @param string $isCrop 是否裁剪

* @param number $c_w 裁剪宽

* @param number $c_h 裁剪高

* @param number $c_x 裁剪坐标 x

* @param number $c_y 裁剪坐标 y

*/

private function _resizeGif($t_w, $t_h, $isCrop=false, $c_w=0, $c_h=0, $c_x=0, $c_y=0){

$dest = new Imagick();

$color_transparent = new ImagickPixel(“transparent”); //透明色

foreach($this->image as $img){

$page = $img->getImagePage();

$tmp = new Imagick();

$tmp->newImage($page[‘width’], $page[‘height’], $color_transparent, ‘gif’);

$tmp->compositeImage($img, Imagick::COMPOSITE_OVER, $page[‘x’], $page[‘y’]);

$tmp->thumbnailImage ( $t_w, $t_h, true );

if($isCrop){

$tmp->cropImage($c_w, $c_h, $c_x, $c_y);

}

$dest->addImage($tmp);

$dest->setImagePage($tmp->getImageWidth(), $tmp->getImageHeight(), 0, 0);

$dest->setImageDelay($img->getImageDelay());

$dest->setImageDispose($img->getImageDispose());

}

$this->image->destroy ();

$this->image = $dest;

}

保存时压缩处理

复制代码 代码如下:

// 保存到指定路径

public function save_to($path) {

//压缩图片质量

$this->image->setImageFormat(‘JPEG’);

$this->image->setImageCompression(Imagick::COMPRESSION_JPEG);

$a = $this->image->getImageCompressionQuality() * 0.60;

if ($a == 0) {

$a = 60;

}

$this->image->setImageCompressionQuality($a);

$this->image->stripImage();

if ($this->type == ‘gif’) {

$this->image->writeImages ( $path, true );

} else {

$this->image->writeImage ( $path );

}

}

ImagickService.php

复制代码 代码如下:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。