ホームページ  >  記事  >  バックエンド開発  >  PHP 拡張機能 MagickWand とは何ですか?インストール方法は?

PHP 拡張機能 MagickWand とは何ですか?インストール方法は?

WBOY
WBOYオリジナル
2016-06-20 13:04:451440ブラウズ

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 と Magickwand とは何ですか?インストール方法は?

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
にあります。 サービスを再起動せずに、保存して終了するだけです。


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