検索
ホームページバックエンド開発PHPチュートリアルPHP画像透かしの追加、圧縮、カットのカプセル化クラス

画像のウォーターマークを追加、圧縮、切り取るための PHP カプセル化クラス

PHP は主に GD ライブラリ拡張子を使用して画像ファイルを操作します。画像を操作するために PHP を頻繁に使用する場合、必然的に多くの関数をカプセル化することになります。そうしないと、反復的なコードが多すぎます。画像に関する機能が多い場合、それらの機能を整理することも考えられるので、クラスにカプセル化するという考え方があります。

画像を操作するには、主に 4 つの手順があります:

  1. 画像を開く
  2. 画像を操作する
  3. 写真の出力
  4. 写真の破棄

3つのステップ1、3、4は毎回書かなければなりません。そしてほぼ毎回。本当に変更する必要がある唯一のステップは、画像操作ステップです。画像の操作は、多くの場合、1 つ以上の主要な GD 関数を通じて行われます。

この記事のカプセル化クラスの 4 つのメソッドは、テキスト ウォーターマーク (imagettftext())、画像ウォーターマーク (imagecopymerge())、画像圧縮、および画像切り取り (imagecopyresampled()) の残りの一般的に使用されるメソッドです。関数はリピートではありません。コードを直接入力します:

<span style="color: #000000;">php </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> Image{        </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> $info;    </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> $image;    </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> $type;    </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> function __construct($src)    {        $</span><span style="color: #0000ff;">this</span>->info=<span style="color: #000000;">getimagesize($src);        $</span><span style="color: #0000ff;">this</span>->type=image_type_to_extension($<span style="color: #0000ff;">this</span>->info[<span style="color: #800000;">'</span><span style="color: #800000;">2</span><span style="color: #800000;">'</span>],<span style="color: #0000ff;">false</span><span style="color: #000000;">);        $fun</span>=<span style="color: #800000;">"</span><span style="color: #800000;">imagecreatefrom{$this->type}</span><span style="color: #800000;">"</span><span style="color: #000000;">;        $</span><span style="color: #0000ff;">this</span>->image=<span style="color: #000000;">$fun($src);    }    </span><span style="color: #008000;">/*</span><span style="color: #008000;">*     * 文字水印     * @param  [type]  $font     字体     * @param  [type]  $content  内容     * @param  [type]  $size     文字大小     * @param  [type]  $col      文字颜色(四元数组)     * @param  array   $location 位置      * @param  integer $angle    倾斜角度     * @return [type]                </span><span style="color: #008000;">*/</span>    <span style="color: #0000ff;">public</span> function fontMark($font,$content,$size,$col,$location,$angle=<span style="color: #800080;">0</span><span style="color: #000000;">){        $col</span>=imagecolorallocatealpha($<span style="color: #0000ff;">this</span>->image, $col[<span style="color: #800000;">'</span><span style="color: #800000;">0</span><span style="color: #800000;">'</span>], $col[<span style="color: #800000;">'</span><span style="color: #800000;">1</span><span style="color: #800000;">'</span>], $col[<span style="color: #800000;">'</span><span style="color: #800000;">2</span><span style="color: #800000;">'</span>],$col[<span style="color: #800000;">'</span><span style="color: #800000;">3</span><span style="color: #800000;">'</span><span style="color: #000000;">]);        imagettftext($</span><span style="color: #0000ff;">this</span>->image, $size, $angle, $location[<span style="color: #800000;">'</span><span style="color: #800000;">0</span><span style="color: #800000;">'</span>], $location[<span style="color: #800000;">'</span><span style="color: #800000;">1</span><span style="color: #800000;">'</span><span style="color: #000000;">], $col,$font,$content);    }        </span><span style="color: #008000;">/*</span><span style="color: #008000;">*     * 图片水印     * @param  [type] $imageMark 水印图片地址     * @param  [type] $dst       水印图片在原图片中的位置     * @param  [type] $pct       透明度     * @return [type]                 </span><span style="color: #008000;">*/</span>    <span style="color: #0000ff;">public</span><span style="color: #000000;"> function imageMark($imageMark,$dst,$pct){        $info2</span>=<span style="color: #000000;">getimagesize($imageMark);        $type</span>=image_type_to_extension($info2[<span style="color: #800000;">'</span><span style="color: #800000;">2</span><span style="color: #800000;">'</span>],<span style="color: #0000ff;">false</span><span style="color: #000000;">);        $func2</span>=<span style="color: #800000;">"</span><span style="color: #800000;">imagecreatefrom</span><span style="color: #800000;">"</span><span style="color: #000000;">.$type;        $water</span>=<span style="color: #000000;">$func2($imageMark);        imagecopymerge($</span><span style="color: #0000ff;">this</span>->image, $water, $dst[<span style="color: #800080;">0</span>], $dst[<span style="color: #800080;">1</span>], <span style="color: #800080;">0</span>, <span style="color: #800080;">0</span>, $info2[<span style="color: #800000;">'</span><span style="color: #800000;">0</span><span style="color: #800000;">'</span>], $info2[<span style="color: #800000;">'</span><span style="color: #800000;">1</span><span style="color: #800000;">'</span><span style="color: #000000;">], $pct);        imagedestroy($water);    }    </span><span style="color: #008000;">/*</span><span style="color: #008000;">*     * 压缩图片     * @param  [type] $thumbSize 压缩图片大小     * @return [type]            [description]     </span><span style="color: #008000;">*/</span>    <span style="color: #0000ff;">public</span><span style="color: #000000;"> function thumb($thumbSize){        $imageThumb</span>=imagecreatetruecolor($thumbSize[<span style="color: #800080;">0</span>], $thumbSize[<span style="color: #800080;">1</span><span style="color: #000000;">]);                imagecopyresampled($imageThumb, $</span><span style="color: #0000ff;">this</span>->image, <span style="color: #800080;">0</span>, <span style="color: #800080;">0</span>, <span style="color: #800080;">0</span>, <span style="color: #800080;">0</span>, $thumbSize[<span style="color: #800080;">0</span>], $thumbSize[<span style="color: #800080;">1</span>], $<span style="color: #0000ff;">this</span>->info[<span style="color: #800000;">'</span><span style="color: #800000;">0</span><span style="color: #800000;">'</span>], $<span style="color: #0000ff;">this</span>->info[<span style="color: #800000;">'</span><span style="color: #800000;">1</span><span style="color: #800000;">'</span><span style="color: #000000;">]);        imagedestroy($</span><span style="color: #0000ff;">this</span>-><span style="color: #000000;">image);        $</span><span style="color: #0000ff;">this</span>->image=<span style="color: #000000;">$imageThumb;    }    </span><span style="color: #008000;">/*</span><span style="color: #008000;">*    * 裁剪图片     * @param  [type] $cutSize  裁剪大小     * @param  [type] $location 裁剪位置     * @return [type]           [description]     </span><span style="color: #008000;">*/</span>     <span style="color: #0000ff;">public</span><span style="color: #000000;"> function cut($cutSize,$location){         $imageCut</span>=imagecreatetruecolor($cutSize[<span style="color: #800080;">0</span>],$cutSize[<span style="color: #800080;">1</span><span style="color: #000000;">]);         imagecopyresampled($imageCut, $</span><span style="color: #0000ff;">this</span>->image, <span style="color: #800080;">0</span>, <span style="color: #800080;">0</span>, $location[<span style="color: #800080;">0</span>], $location[<span style="color: #800080;">1</span>],$cutSize[<span style="color: #800080;">0</span>],$cutSize[<span style="color: #800080;">1</span>],$cutSize[<span style="color: #800080;">0</span>],$cutSize[<span style="color: #800080;">1</span><span style="color: #000000;">]);         imagedestroy($</span><span style="color: #0000ff;">this</span>-><span style="color: #000000;">image);         $</span><span style="color: #0000ff;">this</span>->image=<span style="color: #000000;">$imageCut;     }    </span><span style="color: #008000;">/*</span><span style="color: #008000;">*     * 展现图片     * @return [type] [description]     </span><span style="color: #008000;">*/</span>    <span style="color: #0000ff;">public</span><span style="color: #000000;"> function show(){        header(</span><span style="color: #800000;">"</span><span style="color: #800000;">content-type:</span><span style="color: #800000;">"</span>.$<span style="color: #0000ff;">this</span>->info[<span style="color: #800000;">'</span><span style="color: #800000;">mime</span><span style="color: #800000;">'</span><span style="color: #000000;">]);        $funn</span>=<span style="color: #800000;">"</span><span style="color: #800000;">image</span><span style="color: #800000;">"</span>.$<span style="color: #0000ff;">this</span>-><span style="color: #000000;">type;        $funn($</span><span style="color: #0000ff;">this</span>-><span style="color: #000000;">image);    }    </span><span style="color: #008000;">/*</span><span style="color: #008000;">*     * 保存图片 * @param  [type] $newname 新图片名 * @return [type]          [description] </span><span style="color: #008000;">*/</span>     <span style="color: #0000ff;">public</span><span style="color: #000000;"> function save($newname){         header(</span><span style="color: #800000;">"</span><span style="color: #800000;">content-type:</span><span style="color: #800000;">"</span>.$<span style="color: #0000ff;">this</span>->info[<span style="color: #800000;">'</span><span style="color: #800000;">mime</span><span style="color: #800000;">'</span><span style="color: #000000;">]);         $funn</span>=<span style="color: #800000;">"</span><span style="color: #800000;">image</span><span style="color: #800000;">"</span>.$<span style="color: #0000ff;">this</span>-><span style="color: #000000;">type;         $funn($</span><span style="color: #0000ff;">this</span>->image,$newname.<span style="color: #800000;">'</span><span style="color: #800000;">.</span><span style="color: #800000;">'</span>.$<span style="color: #0000ff;">this</span>-><span style="color: #000000;">type);     }     </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> function __destruct(){         imagedestroy($</span><span style="color: #0000ff;">this</span>-><span style="color: #000000;">image);     } } </span>?>

他の操作が必要な場合は、このクラスに追加してください~~

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHPを使用して電子メールを送信する最良の方法は何ですか?PHPを使用して電子メールを送信する最良の方法は何ですか?May 08, 2025 am 12:21 AM

BestappRoachforseminginphpisusingthephpmailerlibrarydueToitsReliability、featurrichness、andeaseofuse.phpmailerSupportssmtpは、detairederorhandlingを提供します

PHPでの依存関係注射のベストプラクティスPHPでの依存関係注射のベストプラクティスMay 08, 2025 am 12:21 AM

依存関係注射(DI)を使用する理由は、コードのゆるい結合、テスト可能性、および保守性を促進するためです。 1)コンストラクターを使用して依存関係を注入します。2)サービスロケーターの使用を避け、3)依存関係噴射コンテナを使用して依存関係を管理する、4)依存関係を注入することでテスト可能性を向上させる、5)注入依存性を回避、6)パフォーマンスに対するDIの影響を考慮します。

PHPパフォーマンスのチューニングのヒントとコツPHPパフォーマンスのチューニングのヒントとコツMay 08, 2025 am 12:20 AM

phpperformancetuningisucial cuseenhancess andandandadsand。

PHP電子メールセキュリティ:電子メールを送信するためのベストプラクティスPHP電子メールセキュリティ:電子メールを送信するためのベストプラクティスMay 08, 2025 am 12:16 AM

bestpracticesforsendingemails securlyinphpinclude:1)sutureconsmttarttlsencryptionとの使用の使用、2)検証およびサンシジン化のinputStopReventinjectuctacks、3)adinitivedinitivedInemailsopenslsl、4)adlinglinglingemailoaに

パフォーマンスのためにPHPアプリケーションをどのように最適化しますか?パフォーマンスのためにPHPアプリケーションをどのように最適化しますか?May 08, 2025 am 12:08 AM

tooptimizephpapplicationsforporformance、usecaching、databaseoptimization、opcodecaching、andserverconfiguration.1)cachingwithedatedatedatafethtimes.2)最適化バイズビーインデキシング、readedandandandwriteoperations.3)

PHPの依存噴射とは何ですか?PHPの依存噴射とは何ですか?May 07, 2025 pm 03:09 PM

依存関係の依存性、テスト可能性、および維持可能性の依存性の依存性の依存性、および維持可能性は、エクステルンド依存性を維持する可能性があります

最高のPHPパフォーマンス最適化手法最高のPHPパフォーマンス最適化手法May 07, 2025 pm 03:05 PM

PHPパフォーマンスの最適化は、次の手順を通じて実現できます。1)スクリプトの上部にrequire_onceまたはinclude_onceを使用して、ファイルの負荷数を減らすことができます。 2)プリプロセシングステートメントとバッチ処理を使用して、データベースクエリの数を減らします。 3)OpCodeキャッシュのOpCacheを構成します。 4)PHP-FPM最適化プロセス管理を有効にして構成します。 5)CDNを使用して静的リソースを配布します。 6)コードパフォーマンス分析には、XdebugまたはBlackfireを使用します。 7)配列などの効率的なデータ構造を選択します。 8)最適化実行のためのモジュラーコードを記述します。

PHPパフォーマンスの最適化:OpCodeキャッシングの使用PHPパフォーマンスの最適化:OpCodeキャッシングの使用May 07, 2025 pm 02:49 PM

opcodeCachingsificlyprovesppherformanceBycachingCompiledCode、reducingServerloadandResponsetimes.1)itStoresPhpCodeInMemory、バイパス補助補強団体

See all articles

ホット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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

メモ帳++7.3.1

メモ帳++7.3.1

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