PHP 拡張機能 MagickWand
PHP 拡張機能 MagickWand ImageMagick
はじめに
MagickWand は PHP の拡張機能であり、これを通じて ImageMagick との対話を確立し、画像を処理します。これは、デフォルトの GD グラフィックス ライブラリの優れた代替品です。セキュリティと使いやすさの点で、PHP で MagickWand を使用する方が、コマンド ライン ImageMagick を使用するよりもはるかに安全で高速です。さらに、imagick は ImageMagick の代わりに PHP で使用することもできます。
MagickWand には 2 つの形式があります:
1. ImageMagick との対話を確立するだけです。この場合、ImageMagick を最初にインストールする必要があります。ただし、拡張ファイルが小さく (通常は数百 K)、ImageMagick のバージョンをすぐにアップグレードできることです。特別な権限が必要です。
2. 拡張機能自体に ImageMagick が含まれているため、一時ディレクトリに ImageMagick を追加インストールする必要がないという利点がありますが、拡張ファイルは比較的大きい (通常は 4M 以上)。
MagickWand はデフォルトでは PHP インストール パッケージに含まれていません。PHP Web サイトからダウンロードして、この拡張機能を PHP.INI で開く必要があります。
コード例
// convert flower.jpg -quality 80% flower_quality.jpg $resource = NewMagickWand(); MagickReadImage( $resource, 'small_flower.jpg' ); MagickSetFormat($resource, 'JPG'); MagickSetImageCompression($resource, MW_JPEGCompression); MagickSetImageCompressionQuality($resource, 80.0); header( 'Content-Type: image/gif' ); MagickEchoImageBlob( $resource );
画像にテキストを書き込みます:
// convert flower.jpg -font courier -fill white -pointsize 20 -annotate +50+50 Flower flower_annotate1.jpg $resource = NewMagickWand(); $dwand = NewDrawingWand(); $pwand = NewPixelWand(); PixelSetColor($pwand, "white"); DrawSetFont($dwand, "/usr/share/fonts/default/TrueType/cour.ttf");//指定字体 DrawSetFontSize($dwand, 20); DrawSetFillColor($dwand, $pwand); DrawSetGravity($dwand, MW_SouthGravity); MagickReadImage( $resource, 'small_flower.jpg' ); if( MagickAnnotateImage( $resource, $dwand, 0, 0, 0, "Flower" ) ){ header( 'Content-Type: image/gif' ); MagickEchoImageBlob( $resource ); }else{ echo MagickGetExceptionString($resource); }
クロップ:
// convert flower.jpg -crop 128×128+50+50 flower_crop.jpg $resource = NewMagickWand(); MagickReadImage( $resource, 'small_flower.jpg' ); if( MagickCropImage( $resource, 128, 128, 50, 50 ) ){ header( 'Content-Type: image/gif' ); MagickEchoImageBlob( $resource ); }else{ echo MagickGetExceptionString($resource); }
画像を回転:
// convert flower.jpg -rotate 45 flower_rotate45.jpg $resource = NewMagickWand(); MagickReadImage( $resource, 'small_flower.jpg' ); MagickRotateImage( $resource, null, 45 ); header( 'Content-Type: image/gif' ); MagickEchoImageBlob( $resource );
サイズ変更:
// convert flower_original.jpg -resize 640×480 flower.jpg $resource = NewMagickWand(); MagickReadImage( $resource, 'small_flower.jpg' ); MagickResizeImage( $resource, 100, 100, MW_QuadraticFilter, 1.0 ); header( 'Content-Type: image/gif' ); MagickEchoImageBlob( $resource );
シャープ化:
// convert flower.jpg -unsharp 1.5×1.0+1.5+0.02 flower_unsharp.jpg $resource = NewMagickWand(); MagickReadImage( $resource, 'small_flower.jpg' ); MagickUnsharpMaskImage( $resource, 1.5, 1.0, 1.5, 0.02 ); header( 'Content-Type: image/gif' ); MagickEchoImageBlob( $resource );
関連リンク
PHP 用 MagickWand (Windows+パッチ)
MagickWand for PHP マニュアル
PHP/Windows 用 MagickWand (php_magickwand_q16_st.dll)
添付:
ImageMagick は画像処理用のプログラムです
Windows と Linux で実行可能
彼の機能は非常に強力です
サイズ、形式、透かし、ラベルなどのさまざまな画像処理を行うことができます。
たとえば、Linux で Convert --help
を実行します。
ImageMagick
の機能説明の一部をご覧いただけます
PHP プログラムでは、この ImageMagick プログラムを呼び出すこともできます
ただし、呼び出しフォームは PHP モジュール
を通じて実装されます。
このモジュールの名前は、magicwand
です。
多くのプログラマは、PHP の組み込み gd 画像関数ライブラリを使用する代わりに、magicwand に切り替えています
ImageMagick は非常に強力で、インストールされた rpm は Linux ディストリビューション CD に含まれています
ただし、システムに付属する ImageMagick のバージョンは通常非常に古いため、magikwand
と共存できません。
なので、自分で新しいものをインストールするしかありません
magicwand のコンパイルもさらに複雑になります
以下で詳しく説明します
環境の準備
---------------------<🎜>
PHP をコンパイルするための Magickwand モジュール環境には、PHP がすでにインストールされている必要があります
(後でphpでphpizeプログラムを使うため)
ImageMagick の最新バージョン (6.2 以降のバージョン) をダウンロードします
これは、Redhat に付属するバージョンが 5.x であり、magicwand
では使用できないためです。
したがって、6.2.x バージョンを自分でコンパイルして使用することしかできません
さらに、このパッケージは開発環境だけでなく、実際に実行されているサーバーでも必要です
ImageMagick-6.2.x バージョンを手動でコンパイルする必要もあります。
ImageMagick の公式 Web サイトからソースコード パッケージをダウンロードします (Google の最初の検索項目が公式 Web サイトです)
解凍後、設定してインストールします
./configure
LDFLAGS="-L/usr/lib" CPPFLAGS="-I/usr/include"
--prefix=/usr/local/ImageMagick
--enable-shared
--enable-lzw
作る
インストールを行う
以上でバージョン 6.2 ImageMagick のインストールは完了です
ダウンロード
---------------------<🎜>
Magickwandの公式Webサイトからソースコードパッケージをダウンロードします(Googleの最初の検索項目が公式Webサイトです)
php.net
から php ソース コードをダウンロードします。
php ソース コードを解凍し、magickwand も解凍して、php ソース コード
の下の ext/ ディレクトリに置きます。
例:/root/php-4.4.2/ext/magickwand
統合モジュール
---------------------<🎜>
なぜモジュールを統合するのでしょうか?これは、PHP に組み込まれている画像処理関数のライブラリが、magicwand
ではなく gd であるためです。
PHP構成スクリプトには
がまったく表示されません
たとえば、php のソース コード ルート ディレクトリに移動します。例:
cd /root/php-4.4.2
./configure --help grep magickwand
を実行します。
Magickwand に関する関連情報はまったくないことがわかります
したがって、直接コンパイルでは、magikwand モジュールのサポートを取得できません
したがって、Magickwandのソースコードをphp
のソースツリーに手動で追加する必要があります。
そして、configure スクリプトを再生成し、
をコンパイルします。
ディレクトリ cd /root/php-4.4.2/ext/magickwand
に入ります。
phpizeを実行
phpize コマンドは php パッケージ自体に含まれています。このマシンに php がインストールされていない場合、このコマンドは実行できません
(このため、プログラムは php がインストールされたサーバー上でコンパイルする必要があります)
次に、php
のソースコードのルートパスに戻ります。
cd /root/php-4.4.2
古い設定ファイルを削除します
rm ./configure
新しい設定ファイルを生成
./buildconf --force
このとき、phpソースコードディレクトリ
に新しいconfigureスクリプトが誕生しました。
このスクリプトを使用して PHP を設定およびコンパイルし、magicwand モジュール
を有効にします。
./configure --help grep magickwand を実行すると、以下が表示されます:
--with-magickwand=DIR Magickwand のサポートを含めます
これは、PHP
を設定してコンパイルすることでこのモジュールを有効にできることを意味します
コンパイルを構成する
---------------------<🎜>
次に、php を設定し、パラメーターを使用します:
./configure
--enable-shared
--with-magickwand=shared,/usr/local/ImageMagick
--enable-module=shared,magickwand
ここでは、enable-module メソッドを使用して so モジュール ファイルを取得し、他のサーバーのインストールを容易にします
次に
をコンパイルします
作る
数分待つだけで完了です
モジュールを取得
---------------------<🎜>
次に、php ソース コード ディレクトリに移動して、コンパイルしたばかりの so ファイルを見つけます
find /root/php-4.4.2 -name 'magickwand.so'
このファイルをコピーし、別のサーバーに配置して使用します
cp ./module/magickwand.so /root
本番環境へのインストール
---------------------<🎜>
実際に実行中のサーバーでは、まず前述の方法に従う必要があります
ImageMagick の 6.2.x バージョンをコンパイルし、サーバーにインストールします
次に、magickwand.so を php
のモジュール ディレクトリにコピーします。
たとえば、php:/usr/local/php4/lib/php
の as4 バージョンに対応します。
次に、php.ini に extension=magickwand.so
を追加します。たとえば、as4 バージョンに対応する php.ini は /usr/local/php4/etc/php.ini
にあります。
サービスを再起動せずに、保存して終了するだけです。