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
复制代码 代码如下:

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Bagaimana untuk melaksanakan fungsi lakaran kecil imej dalam JavaScript? Apabila kami memaparkan imej pada halaman web, kadangkala kami perlu mengurangkan imej besar asal untuk memenuhi keperluan susun atur halaman, yang memerlukan penggunaan fungsi lakaran kecil imej. Dalam JavaScript, kita boleh melaksanakan fungsi lakaran kenit imej melalui kaedah berikut: Gunakan HTML untuk menetapkan secara langsung lebar dan tinggi imej Cara paling mudah ialah menetapkan secara langsung atribut lebar dan ketinggian imej dalam HTML untuk mencapai kesan lakaran kecil. Contohnya:&l

Cara menggunakan CSS untuk mencapai kesan zum imej Dalam reka bentuk web, kesan zum imej adalah salah satu keperluan biasa. Melalui sifat dan teknik CSS yang berkaitan, kami boleh mencapai kesan zum imej dengan mudah. Di bawah, kami akan memperkenalkan secara terperinci cara menggunakan CSS untuk mencapai kesan zum imej, dan memberikan contoh kod khusus. Gunakan atribut transformasi untuk melaksanakan penskalaan matriks imej Atribut transformasi membolehkan kami mengubah elemen dengan memutar, menskala, menyengetkan atau menterjemahkannya. Antaranya, transformasi skala adalah untuk merealisasikan gambaran

Bagaimana untuk melaksanakan penskalaan imej dan kesan kaca pembesar dalam Vue? Dengan perkembangan teknologi Web yang berterusan, pengguna mempunyai keperluan yang semakin tinggi untuk kesan paparan imej pada tapak web. Antaranya, pembesaran imej dan kesan kaca pembesar adalah keperluan yang agak biasa. Ia agak mudah untuk melaksanakan penskalaan imej dan kesan kaca pembesar dalam Vue Seterusnya, saya akan memperkenalkan kaedah pelaksanaan khusus secara terperinci. 1. Kaedah asas Mula-mula, mari kita lihat bagaimana untuk mencapai kesan penskalaan imej asas. Kaedah pelaksanaannya mudah, hanya gunakan arahan terbina dalam Vue

Cara terbaik untuk mencapai penskalaan imej menggunakan perpustakaan PHP dan GD Dalam beberapa tahun kebelakangan ini, dengan populariti Internet, pemprosesan imej telah menjadi salah satu fungsi yang diperlukan untuk banyak tapak. Sebagai salah satu keperluan paling biasa dalam pemprosesan imej, penskalaan imej perlu dapat menskalakan saiz imej secara berkadar tanpa kehilangan kualiti imej untuk menyesuaikan diri dengan keperluan paparan yang berbeza. Sebagai bahasa pengaturcaraan sisi pelayan yang biasa, PHP mempunyai banyak perpustakaan pemprosesan imej, yang paling biasa digunakan ialah perpustakaan GD. Pustaka GD menyediakan antara muka yang ringkas namun berkuasa yang boleh digunakan untuk mengendalikan pelbagai operasi imej.

Cara menggunakan PHP untuk membangunkan fungsi penskalaan dan pemangkasan imej ringkas Ringkasan: Pemprosesan imej ialah keperluan biasa dalam pembangunan web Artikel ini akan memperkenalkan cara menggunakan PHP untuk membangunkan fungsi penskalaan dan pemangkasan imej yang ringkas dan menyediakan contoh kod khusus. Dengan mempelajari artikel ini, pembaca boleh memahami cara menggunakan PHP untuk melaksanakan fungsi pemprosesan imej asas dalam aplikasi Web. 1. Pengenalan latar belakang Dalam pembangunan web, kadangkala kita perlu menskala atau memangkas imej untuk disesuaikan dengan reka letak halaman yang berbeza atau memenuhi keperluan tertentu. PHP sebagai

Teknik susun atur CSSPositions untuk penskalaan imej Dalam reka bentuk web, penskalaan imej adalah salah satu keperluan biasa. Melalui reka letak CSSPositions, kami boleh mencapai kesan zum imej dan menambah pengalaman visual yang lebih baik pada halaman web. Artikel ini akan memperkenalkan beberapa teknik dan memberikan contoh kod khusus. Gunakan atribut kedudukan untuk menetapkan kedudukan imej: Dalam CSS, anda boleh menggunakan atribut kedudukan untuk menentukan cara sesuatu elemen diletakkan. Dengan menetapkan atribut kedudukan kepada "re

Cara menggunakan HTML, CSS dan jQuery untuk melaksanakan fungsi lanjutan penskalaan imej Pengenalan: Dalam reka bentuk web moden, keindahan dan kebolehsuaian imej adalah sangat penting. Walau bagaimanapun, paparan gambar konvensional selalunya tidak dapat memenuhi keperluan kita. Dalam artikel ini, kami akan memperkenalkan cara menggunakan HTML, CSS dan jQuery untuk melaksanakan beberapa fungsi zum imej lanjutan. Melalui teknologi ini, kami boleh mencapai kesan penskalaan imej tersuai dan menambah lebih banyak interaktiviti pada halaman web kami. Langkah 1: Penanda HTML Mula-mula, kita memerlukan a

Petua dan kaedah menggunakan CSS untuk mencapai kesan gelembung imej Dalam reka bentuk web, menambah kesan khas pada imej adalah salah satu cara penting untuk meningkatkan pengalaman pengguna. Antaranya, kesan gelembung gambar boleh menambah minat dan interaktiviti pada gambar, menjadikan kandungan web lebih menarik. Artikel ini akan berkongsi beberapa petua dan kaedah untuk menggunakan CSS untuk mencapai kesan gelembung imej, dengan contoh kod khusus. Gunakan elemen kelas pseudo untuk mencipta kesan gelembung Dengan menggunakan elemen kelas pseudo CSS, kita boleh menambah kesan gelembung di atas imej. Kaedah khusus adalah untuk menetapkan pengelas pseudo
