このクラスは、画像上のテキストをより柔軟に操作するためのパッケージ Intervention Image の代替です。特定の領域にテキストをフィットさせ、フォント サイズを自動的に計算し、行の高さを変更する必要がある場合に使用します。テキスト描画メソッドは、碑文の実際のサイズを返す方法も認識しており、これにより、たとえばブロックを互いの下に配置することが可能になります。
このクラスは、テキストの柔軟な操作に加えて、Intervention パッケージと同様の Image API を提供します。ポスターのスマートなサイズ変更、フィルター、図形の描画、他の画像のオーバーレイなどが含まれます。
仕事でコンポーザーを使用していない場合は、クラスの単純さと依存関係の欠如にも興味があるかもしれません。このクラスは PHP-GD ドライバーのみをサポートすることに注意してください。クラスを簡単に継承することもできます。親のすべてのメソッドをオーバーライドできます。
poster editorインストールする最良の方法は、Composer を使用してすばやく簡単にインストールすることです。
ただし、ローダーを使用せずにクラスを直接要求することもできます。これはパフォーマンスにはまったく影響しません。
php composer.phar require antonlukin/poster-editor
エラーが発生した場合、クラス メソッドは例外を返します。
したがって、これらをブロックtry..catch
内で呼び出すのが最善です。
// Using composer
require_once __DIR__ . ' /vendor/autoload.php ' ;
// Or directly
// require_once __DIR__ . '/PosterEditor.php';
try {
$ image = new PosterEditor PosterEditor ();
$ image -> make ( ' images/bridge.jpg ' )-> fit ( 600 , 600 );
$ image -> show ();
} catch ( Exception $ e ) {
echo $ e -> getMessage ();
}
$image->get()
raw gd コマンドを使用するための画像リソースを取得します。
$image->set(instance $resourse)
raw gd コマンドを使用した後に画像リソースを設定します。
$image->make(mixed $data)
ファイルまたはバイナリ データから新しいイメージ インスタンスを作成します。
$image->insert(mixed $data, array $options = array())
指定された画像ソースを現在の画像の上に任意の位置で貼り付けます。最初のパラメータには、バイナリ データ、またはファイルまたは別のクラス インスタンスへのパスを指定できます。オプションは、左上隅からの x/y 相対オフセット座標と 0 ~ 100 の不透明度の配列です。0 は透明度なしです。デフォルトでは画像は中央に配置されます。
$image->canvas(int $width, int $height, array $options = array())
キャンバスを幅と高さで初期化します。背景色のオプションは、色/不透明度設定の配列にあります。デフォルトでは、不透明度のない黒いキャンバスです。
$image->show(string $format = null, int $quality = 90)
指定された形式と品質で現在の画像を含む HTTP 応答を送信します。形式はファイル画像の拡張子です。デフォルトでは、応答データは現在の画像のタイプでエンコードされます。画像タイプがまだ定義されていない場合、メソッドは JPEG エンコードされたデータを返します。すべてのファイル タイプの品質は、0 (低品質、小さいファイル) から 100 (最高の品質、大きいファイル) の範囲に正規化されます。デフォルト値は 90 です。PNG 形式は可逆であり、品質は画像サイズと圧縮速度にのみ影響します。
$image->save(string $path, int $quality = 90, string $format = null)
画像オブジェクトの現在の状態をファイルシステムに保存します。オプションで、画像を保存する特定のパスを定義します。画像の種類はファイル拡張子によって定義されます。利用可能な拡張子がない場合、応答データは現在の画像のタイプでエンコードされます。画像タイプがまだ定義されていない場合、メソッドは JPEG エンコードされたデータを返します。必要に応じて、format パラメータを使用してこれをオーバーライドできます。すべてのファイル タイプの品質は、0 (低品質、小さいファイル) から 100 (最高の品質、大きいファイル) の範囲に正規化されます。デフォルト値は 90 です。PNG 形式は可逆であり、品質は画像サイズと圧縮速度にのみ影響します。
$image->destroy()
PHP スクリプトが終了する前に、現在のイメージ インスタンスに関連付けられたメモリを解放します。通常、リソースはスクリプトの終了後に自動的に破棄されます。
$image->width()
現在の画像の高さをピクセル単位で返します。
$image->height()
現在の画像の高さをピクセル単位で返します。
$image->resize(int $width, int $height)
指定された幅と高さに基づいて現在の画像のサイズを変更します。アスペクト比は気にしません。比例してサイズを変更するには、 upsize
およびdownsize
メソッドを使用します。
$image->upsize(int $width = null, int $height = null)
画像の最大側を拡大します。ヌル化された幅または高さの比率によって計算されます。
$image->downsize(int $width = null, int $height = null)
最も大きい側の画像を縮小します。ヌル化された幅または高さの比率によって計算されます。
$image->crop(int $width, int $height, array $options = array())
現在の画像の長方形部分を指定された幅と高さで切り取ります。オプションの X、Y 座標を定義して、カットアウトの左上隅を特定の位置に移動します。
$image->fit(int $width, int $height, string $position = 'center')
トリミングとサイズ変更を組み合わせて、画像をスマートな方法でフォーマットします。このメソッドは、現在の画像上で最適なアスペクト比を自動的に検出し、それを切り取って、指定された寸法にサイズ変更します。デフォルトで可能な位置は、 top-left
、 top
、 top-right
、 bottom-left
、 bottom
、 bottom-right
、 right
、 left
、 center
です。
$image->line(int $x1, int $y1, int $x2, int $y2, array $options = array())
現在の画像上に x,y 点 1 から x,y 点 2 まで線を描きます。オプション パラメータを使用して、色、不透明度、幅の値を設定します。
$image->rectangle(int $x, int $y, int $width, int $height, array $options = array())
現在の画像上に色付きの長方形を描画します。オプション パラメータを使用して、色、不透明度、太さ、輪郭の値を設定します。
$image->ellipse(int $x, int $y, int $width, int $height, array $options = array())
楕円を描きます。オプション パラメータを使用して、色、不透明度、アウトラインの値を設定します。
$image->brightness(int $level = 0)
現在の画像の明るさを指定されたレベルで変更します。最小の明るさには -100、変化なしの場合は 0、最大の場合は +100 の間の値を使用します。
$image->contrast(int $level = 0)
現在の画像のコントラストを指定されたレベルで変更します。最小コントラストには -100、変化なしには 0、最大には +100 の間の値を使用します。
$image->grayscale()
画像をグレースケール バージョンに変換します。
$image->blur()
ぼかし画像効果を適用します。
$image->invert()
画像の色を反転します。
$image->blackout()
画像上に黒い不透明な長方形を描画します。
$image->rotate(int $angle, array $options = array())
画像を回転します。角度を度単位で設定し、回転後のカバーされていないゾーンのオプションの色を設定します。
$image->text(string $text, array $options = array(), array &$boundary = array())
画像上にテキストを描画します。可能なオプション:
描画されたテキスト ボックスの実際の寸法を取得するには、境界を使用します。以下の詳細な例を参照してください。
$ image = new PosterEditor PosterEditor ();
$ image -> make ( ' images/bridge.jpg ' )-> fit ( 1200 , 630 , ' bottom ' )-> blackout ( 50 );
$ logo = new PosterEditor PosterEditor ();
$ logo -> make ( ' images/logo.png ' )-> downsize ( 150 , null );
$ image -> insert ( $ logo , array ( ' x ' => 50 , ' y ' => 50 ))-> show ();
$ image = new PosterEditor PosterEditor ();
$ image -> make ( ' images/bridge.jpg ' )-> fit ( 1200 , 630 );
$ image -> grayscale ()-> brightness (- 40 );
$ image -> text (
' Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat Lorem ipsum dolor sit amet ' , // phpcs:ignore
array (
' x ' => 100 ,
' y ' => 100 ,
' width ' => 1000 ,
' height ' => 400 ,
' horizontal ' => ' center ' ,
' vertical ' => ' center ' ,
' fontpath ' => ' fonts/opensans.ttf ' ,
' fontsize ' => 24 ,
' lineheight ' => 1.75 ,
' color ' => ' #ffffff ' ,
' opacity ' => 0 ,
' debug ' => true ,
)
);
$ image -> show ( ' jpg ' , 70 );
$ image = new PosterEditor PosterEditor ();
$ image -> make ( ' images/bridge.jpg ' )-> fit ( 900 , 600 );
$ image -> blackout ( 70 );
$ image -> text (
' Lorem ipsum dolor d d 4 g sit amet, consectetur adipiscing et, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex eas commodo consequat sdfsdfl ' , // phpcs:ignore
array (
' x ' => 100 ,
' y ' => 100 ,
' width ' => 600 ,
' height ' => 400 ,
' horizontal ' => ' justify ' ,
' vertical ' => ' justify ' ,
' fontpath ' => ' fonts/opensans.ttf ' ,
' fontsize ' => 20 ,
' lineheight ' => 1.5 ,
' color ' => ' #ffffff ' ,
' opacity ' => 0 ,
' debug ' => true ,
)
);
$ image -> show ( ' png ' );
$ image = new PosterEditor PosterEditor ();
$ image -> make ( ' images/bridge.jpg ' )-> crop (
900 , 600 ,
array (
' x ' => ' 0 ' ,
' y ' => ' 100 '
)
);
$ image -> grayscale ()-> brightness (- 40 );
$ image -> text (
' Large title with unknown height. Can be multi-line ' ,
array (
' x ' => 50 ,
' y ' => 100 ,
' width ' => 800 ,
' fontpath ' => ' /fonts/merriweather.ttf ' ,
' fontsize ' => 48 ,
' lineheight ' => 1.5 ,
' color ' => ' #9999ff ' ,
),
$ boundary
);
$ image -> text (
' This text appears right after title using smart boundaries ' ,
array (
' x ' => 50 ,
' y ' => $ boundary [ ' y ' ] + $ boundary [ ' height ' ],
' width ' => 800 ,
' fontpath ' => ' /fonts/opensans.ttf ' ,
' fontsize ' => 20 ,
' lineheight ' => 1.5 ,
' color ' => ' #ff9999 ' ,
),
$ boundary
);
$ image -> show ();
$ image = new PosterEditor PosterEditor ();
$ image -> make ( ' images/bridge.jpg ' )-> fit ( 1000 , 630 , ' bottom ' );
$ image -> contrast ( 5 )-> brightness (- 30 )-> blur ();
$ image -> rectangle (
20 , 20 , 960 , 590 ,
array (
' color ' => ' #ffffff ' ,
' outline ' => true ,
' width ' => 4 ,
)
);
$ image -> ellipse (
200 , 200 , 200 , 200 ,
array (
' color ' => ' #00ff00 ' ,
' opacity ' => 50 ,
)
);
$ image -> ellipse (
800 , 200 , 200 , 200 ,
array (
' color ' => ' #ff0000 ' ,
' opacity ' => 50 ,
)
);
$ image -> rectangle (
480 , 280 , 80 , 140 ,
array (
' color ' => ' #0000ff ' ,
)
);
$ image -> line (
200 , 500 , 800 , 500 ,
array (
' color ' => array ( 255 , 255 , 0 ),
' opacity ' => 10 ,
' width ' => 4 ,
)
);
$ image -> show ( ' png ' );
すべてのプロジェクト コードは Github に保存されます。プロジェクトを支援する最善の方法は、バグを報告するか、新しい機能を追加することです。ここで問題を開いたり、プル リクエストを送信したりすることもできます。