ホームページ php教程 php手册 php使用imagick模块实现图片缩放、裁剪、压缩示例

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

Jun 06, 2016 pm 08:23 PM
画像のズーム

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

复制代码 代码如下:

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

JavaScriptで画像サムネイル機能を実装するにはどうすればよいですか? JavaScriptで画像サムネイル機能を実装するにはどうすればよいですか? Oct 25, 2023 am 08:56 AM

JavaScriptで画像サムネイル機能を実装するにはどうすればよいですか? Web ページに画像を表示する場合、ページのレイアウト要件を満たすために元の大きな画像を縮小する必要がある場合があり、そのためには画像のサムネイル機能を使用する必要があります。 JavaScript では、次の方法で画像のサムネイル機能を実装できます: HTML を使用して画像の幅と高さを直接設定する 最も簡単な方法は、HTML で画像の幅と高さの属性を直接設定して、サムネイル効果。例:&l

CSS を使用して画像のズーム効果を実現する方法 CSS を使用して画像のズーム効果を実現する方法 Nov 21, 2023 pm 04:17 PM

CSS を使用して画像のズーム効果を実現する方法 Web デザインでは、画像のズーム効果は一般的な要件の 1 つです。 CSS の関連するプロパティとテクニックを使用すると、画像のズーム効果を簡単に実現できます。以下では、CSS を使用して画像のズーム効果を実現する方法と、具体的なコード例を詳しく紹介します。画像のマトリックス スケーリングを実装するには、transform 属性を使用します。transform 属性を使用すると、要素を回転、拡大縮小、傾斜、または平行移動することによって要素を変換できます。その中で、スケーリング変換は、画像を実現することです。

Vue で画像のスケーリングと虫眼鏡効果を実装するにはどうすればよいですか? Vue で画像のスケーリングと虫眼鏡効果を実装するにはどうすればよいですか? Jun 25, 2023 pm 07:32 PM

Vue で画像のスケーリングと虫眼鏡効果を実装するにはどうすればよいですか? Web テクノロジーの継続的な発展に伴い、Web サイト上の画像の表示効果に対するユーザーの要求はますます高まっています。その中でも、画像のズームと虫眼鏡効果は比較的一般的な要件です。 Vueでは画像の拡大縮小や虫眼鏡の効果を比較的簡単に実装することができますので、次に具体的な実装方法を詳しく紹介していきます。 1. 基本的な方法 まず、基本的な画像の拡大縮小効果を実現する方法を見てみましょう。実装方法は簡単で、Vueの組み込み命令を利用するだけです。

PHP と GD ライブラリを使用して画像のスケーリングを実現する最良の方法 PHP と GD ライブラリを使用して画像のスケーリングを実現する最良の方法 Jul 12, 2023 pm 08:07 PM

PHP および GD ライブラリを使用して画像の拡大縮小を実現する最良の方法 近年、インターネットの普及に伴い、画像処理は多くのサイトで必要な機能の 1 つとなっています。画像処理における最も一般的な要件の 1 つとして、画像スケーリングでは、さまざまな表示ニーズに適応するために、画質を損なうことなく画像サイズを比例的に拡大縮小できる必要があります。一般的なサーバー側プログラミング言語として、PHP には豊富な画像処理ライブラリがあり、その中で最もよく使用されるのは GD ライブラリです。 GD ライブラリは、さまざまな画像操作を処理するために使用できる、シンプルかつ強力なインターフェイスを提供します。

PHP を使用して単純な画像のスケーリングおよびトリミング機能を開発する方法 PHP を使用して単純な画像のスケーリングおよびトリミング機能を開発する方法 Sep 21, 2023 am 10:28 AM

PHP を使用して単純な画像のスケーリングおよびトリミング機能を開発する方法 概要: 画像処理は Web 開発における一般的な要件です。この記事では、PHP を使用して単純な画像のスケーリングおよびトリミング機能を開発する方法を紹介し、具体的なコード例を示します。この記事を読むことで、読者は PHP を使用して Web アプリケーションに基本的な画像処理機能を実装する方法を理解できます。 1. 背景の紹介 Web 開発では、さまざまなページ レイアウトに適応したり、特定のニーズを満たすために、画像を拡大縮小したりトリミングしたりする必要がある場合があります。 PHPとして

HTML、CSS、jQuery を使用して高度な画像ズーム機能を実装する方法 HTML、CSS、jQuery を使用して高度な画像ズーム機能を実装する方法 Oct 25, 2023 am 09:07 AM

HTML、CSS、jQuery を使用して画像スケーリングの高度な機能を実装する方法 はじめに: 現代の Web デザインでは、画像の美しさと適応性が非常に重要です。しかし、従来の画像表示ではニーズを満たせないことがよくあります。この記事では、HTML、CSS、jQuery を使用して高度な画像ズーム機能を実装する方法を紹介します。これらのテクノロジーを通じて、カスタマイズされた画像のスケーリング効果を実現し、Web ページにさらにインタラクティブ性を追加できます。ステップ 1: HTML マークアップ まず、

CSS 位置レイアウトを使用して画像のスケーリングを実装するためのヒント CSS 位置レイアウトを使用して画像のスケーリングを実装するためのヒント Sep 26, 2023 pm 02:17 PM

画像のスケーリングのための CSSPositions レイアウト テクニック Web デザインでは、画像のスケーリングは一般的な要件の 1 つです。 CSSPositions レイアウトを通じて、画像のズーム効果を実現し、Web ページにより良い視覚体験を追加できます。この記事では、いくつかのテクニックを紹介し、具体的なコード例を示します。画像の位置を設定するには、position 属性を使用します。CSS では、position 属性を使用して、要素の配置方法を定義できます。位置属性を「re」に設定することで、

CSS を使用して画像バブル効果を実現するためのヒントと方法 CSS を使用して画像バブル効果を実現するためのヒントと方法 Oct 18, 2023 pm 12:24 PM

CSS を使用して画像バブル効果を実現するためのヒントと方法 Web デザインでは、画像に特殊効果を追加することは、ユーザー エクスペリエンスを向上させる重要な手段の 1 つです。その中でも、ピクチャーバブルエフェクトは、写真に面白みとインタラクティブ性を加えて、Web コンテンツをより魅力的にすることができます。この記事では、CSS を使用して画像のバブル効果を実現するためのヒントと方法を、具体的なコード例とともに紹介します。擬似クラス要素を使用してバブル効果を作成する CSS 擬似クラス要素を使用すると、画像の上にバブル効果を追加できます。具体的な方法は擬似分類器を設定することです

See all articles