php使用imagick模块实现图片缩放、裁剪、压缩示例
这篇文章主要介绍了php使用imagick模块实现图片缩放、裁剪、压缩示例,需要的朋友可以参考下
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) //宽高比例小于目标宽高比例 宽度等比例放大 按目标高度从头部截取
$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
复制代码 代码如下:

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



How to implement image thumbnail function in JavaScript? When we display images on a web page, we sometimes need to reduce the original large image to meet the layout requirements of the page, which requires the use of the image thumbnail function. In JavaScript, we can implement the thumbnail function of the image through the following methods: Use HTML to directly set the width and height of the image. The simplest way is to directly set the width and height attributes of the image in HTML to achieve the thumbnail effect. For example:&l

How to use CSS to achieve the zoom effect of images In web design, the zoom effect of images is one of the common requirements. Through the related properties and techniques of CSS, we can easily achieve the zoom effect of images. Below, we will introduce in detail how to use CSS to achieve the zoom effect of images, and give specific code examples. Use the transform attribute to implement matrix scaling of images. The transform attribute allows us to transform elements by rotating, scaling, tilting or translating them. Among them, the scaling transformation is to realize the picture

How to implement image scaling and magnifying glass effects in Vue? With the continuous development of Web technology, users have increasingly higher requirements for the display effects of images on websites. Among them, image zooming and magnifying glass effects are relatively common requirements. It is relatively simple to implement image scaling and magnifying glass effects in Vue. Next, I will introduce the specific implementation method in detail. 1. Basic method First, let us take a look at how to achieve the basic image scaling effect. The implementation method is simple, just use Vue’s built-in instructions

The best way to achieve image scaling using PHP and GD libraries. In recent years, with the popularity of the Internet, image processing has become one of the necessary functions for many sites. As one of the most common requirements in image processing, image scaling needs to be able to scale the image size proportionally without losing image quality to adapt to different display needs. As a common server-side programming language, PHP has a wealth of image processing libraries, the most commonly used of which is the GD library. The GD library provides a simple yet powerful interface that can be used to handle various image operations.

How to use PHP to develop simple image scaling and cropping functions Summary: Image processing is a common requirement in web development. This article will introduce how to use PHP to develop simple image scaling and cropping functions and provide specific code examples. By studying this article, readers can understand how to use PHP to implement basic image processing functions in Web applications. 1. Background introduction In web development, sometimes we need to scale or crop images to adapt to different page layouts or meet specific needs. PHP as

How to use HTML, CSS and jQuery to implement the advanced function of image scaling Introduction: In modern web design, the beauty and adaptability of images are very important. However, conventional picture display often cannot meet our needs. In this article, we will introduce how to use HTML, CSS and jQuery to implement some advanced image zoom functions. Through these technologies, we can achieve customized image scaling effects and add more interactivity to our web pages. Step 1: HTML Markup First, we need a

CSSPositions layout techniques for image scaling In web design, image scaling is one of the common requirements. Through CSSPositions layout, we can achieve the zoom effect of images and add a better visual experience to the web page. This article will introduce some techniques and give specific code examples. Use the position attribute to set the position of an image: In CSS, you can use the position attribute to define how an element is positioned. By setting the position attribute to "re

Tips and methods for using CSS to achieve image bubble effects In web design, adding special effects to images is one of the important means to improve user experience. Among them, picture bubble effects can add interest and interactivity to pictures, making web content more attractive. This article will share some tips and methods for using CSS to achieve image bubble effects, with specific code examples. Use pseudo-class elements to create bubble effects By using CSS pseudo-class elements, we can add a bubble effect above the image. The specific method is to set pseudo classifiers
