Rumah php教程 php手册 php使用imagick模块实现图片缩放、裁剪、压缩示例

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

Jun 06, 2016 pm 08:23 PM
Zum imej

这篇文章主要介绍了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

复制代码 代码如下:

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk melaksanakan fungsi lakaran kecil imej dalam JavaScript? Bagaimana untuk melaksanakan fungsi lakaran kecil imej dalam JavaScript? Oct 25, 2023 am 08:56 AM

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 Cara menggunakan CSS untuk mencapai kesan zum imej Nov 21, 2023 pm 04:17 PM

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? Bagaimana untuk melaksanakan penskalaan imej dan kesan kaca pembesar dalam Vue? Jun 25, 2023 pm 07:32 PM

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 Cara terbaik untuk mencapai penskalaan imej menggunakan perpustakaan PHP dan GD Jul 12, 2023 pm 08:07 PM

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 yang mudah Cara menggunakan PHP untuk membangunkan fungsi penskalaan dan pemangkasan imej yang mudah Sep 21, 2023 am 10:28 AM

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

Petua untuk melaksanakan penskalaan imej menggunakan reka letak Kedudukan CSS Petua untuk melaksanakan penskalaan imej menggunakan reka letak Kedudukan CSS Sep 26, 2023 pm 02:17 PM

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 zum imej lanjutan Cara menggunakan HTML, CSS dan jQuery untuk melaksanakan fungsi zum imej lanjutan Oct 25, 2023 am 09:07 AM

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 untuk menggunakan CSS untuk mencapai kesan gelembung imej Petua dan kaedah untuk menggunakan CSS untuk mencapai kesan gelembung imej Oct 18, 2023 pm 12:24 PM

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

See all articles