画像のサイズ変更、拡大縮小、トリミングを行うための PHP ライブラリ。
画像をトリミング、サイズ変更、サーバーに保存したくない場合は、Gumlet.com が無料のサービスで、画像をリアルタイムで処理し、CDN を通じて世界中に提供できます。
このパッケージは、このリポジトリと同じベンダーおよびパッケージ ID を持つ Packagist を通じて入手できます。
Composer を使用している場合は、 composer.json
ファイルに以下を追加します。
{
"require" : {
"gumlet/php-image-resize" : " 2.0.* "
}
}
まだ PHP 5.3 を使用している場合は、このライブラリのバージョン1.7.0
をインストールし、PHP 5.4 を使用している場合は、バージョン1.8.0
インストールしてください。
WebP サポートは PHP 5.6.0
で追加され、ライブラリの現在のバージョンはそれをサポートしています。問題が発生した場合は、このライブラリのバージョン1.9.2
を使用してください。
PHP バージョン >= 2.0.1
以降のバージョンのこのライブラリを使用する必要があります。
さもないと:
include ' /path/to/ImageResize.php ' ;
このクラスは名前空間を使用するため、オブジェクトをインスタンス化するときに、完全修飾名前空間を使用する必要があります。
$ image = new Gumlet ImageResize ();
またはエイリアスを付けます:
use Gumlet ImageResize ;
$ image = new ImageResize ();
注: このライブラリは、アニメーション GIF ファイルのサイズ変更をサポートしていない GD クラスを使用しています。
画像を拡大縮小するには、この場合はサイズの半分にします (拡大縮小はパーセンテージに基づいて行われます)。
$ image = new ImageResize ( ' image.jpg ' );
$ image -> scale ( 50 );
$ image -> save ( ' image2.jpg ' );
1 次元に従って画像のサイズを変更するには (アスペクト比を維持しながら):
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resizeToHeight ( 500 );
$ image -> save ( ' image2.jpg ' );
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resizeToWidth ( 300 );
$ image -> save ( ' image2.jpg ' );
画像の方向に関係なく、指定された基準に従って画像のサイズを変更するには (アスペクト比を維持しながら):
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resizeToLongSide ( 500 );
$ image -> save ( ' image2.jpg ' );
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resizeToShortSide ( 300 );
$ image -> save ( ' image2.jpg ' );
指定された一連の寸法に最適になるように画像のサイズを変更するには (アペット比を維持しながら):
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resizeToBestFit ( 500 , 300 );
$ image -> save ( ' image2.jpg ' );
すべてのサイズ変更関数には$allow_enlarge
オプションがあり、デフォルトでは false に設定されています。任意のサイズ変更関数にtrue
渡すことで有効にできます。
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resize ( 500 , 300 , $ allow_enlarge = True );
$ image -> save ( ' image2.jpg ' );
アスペクト比を自分で処理できる場合は、サイズを直接変更できます。
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resize ( 800 , 600 );
$ image -> save ( ' image2.jpg ' );
ソース画像と同じ幅/高さの比率を使用しないと、画像が歪む原因になります。
画像をトリミングするには:
$ image = new ImageResize ( ' image.jpg ' );
$ image -> crop ( 200 , 200 );
$ image -> save ( ' image2.jpg ' );
これにより、渡された寸法にできる限り近くなるように画像が拡大縮小され、残りがトリミングされて中央に配置されます。
上の例の場合、400px × 600pxの画像を200px × 300pxにリサイズし、上下50pxを除いた200px × 200pxになります。
クロップモード:
画像のサイズを変更した後に最終的に超過する幅または高さをどのように処理するかを選択するために利用できるトリミング モード オプションはほとんどありません。使用されるデフォルトのトリミング モードはCROPCENTER
です。結果として、これらのコード部分は同等になります。
$ image = new ImageResize ( ' image.jpg ' );
$ image -> crop ( 200 , 200 );
$ image -> save ( ' image2.jpg ' );
$ image = new ImageResize ( ' image.jpg ' );
$ image -> crop ( 200 , 200 , true , ImageResize:: CROPCENTER );
$ image -> save ( ' image2.jpg ' );
400px × 600px の画像があり、それを 200px × 200px にトリミングしたい場合、画像は 200px × 300px にリサイズされ、トリミングの値を超える 100px をどのように処理するかを指定できます。使用したいモードを選択します。
たとえば、クロップモードCROPTOP
渡すと、下部から 100 ピクセルが取り除かれ、200 ピクセル × 200 ピクセルが残ります。
$ image = new ImageResize ( ' image.jpg ' );
$ image -> crop ( 200 , 200 , true , ImageResize:: CROPTOP );
$ image -> save ( ' image2.jpg ' );
逆に、クロップモードCROPBOTTOM
を渡すと、上部から 100 ピクセルが削除され、200 ピクセル × 200 ピクセルになります。
$ image = new ImageResize ( ' image.jpg ' );
$ image -> crop ( 200 , 200 , true , ImageResize:: CROPBOTTOM );
$ image -> save ( ' image2.jpg ' );
フリークロップ:
カスタムの切り抜き位置を定義する方法もあります。 freecrop
メソッドで $x と $y を定義できます。
$ image = new ImageResize ( ' image.jpg ' );
$ image -> freecrop ( 200 , 200 , $ x = 20 , $ y = 20 );
$ image -> save ( ' image2.jpg ' );
文字列から画像をロードするには:
$ image = ImageResize:: createFromString ( base64_decode ( ' R0lGODlhAQABAIAAAAQCBP///yH5BAEAAAEALAAAAAABAAEAAAICRAEAOw== ' ));
$ image -> scale ( 50 );
$ image -> save ( ' image.jpg ' );
結果を文字列として返すこともできます。
$ image = ImageResize:: createFromString ( base64_decode ( ' R0lGODlhAQABAIAAAAQCBP///yH5BAEAAAEALAAAAAABAAEAAAICRAEAOw== ' ));
$ image -> scale ( 50 );
echo $ image -> getImageAsString ();
Magic __toString()
もサポートされています。
$ image = ImageResize:: createFromString ( base64_decode ( ' R0lGODlhAQABAIAAAAQCBP///yH5BAEAAAEALAAAAAABAAEAAAICRAEAOw== ' ));
$ image -> resize ( 10 , 10 );
echo ( string ) $ image ;
上で見たように、 $image->save('image.jpg');
画像をブラウザに直接レンダリングするには、 $image->output()
を呼び出します。
ディスクに保存するとき、またはブラウザに出力するとき、スクリプトは入力と同じ出力タイプを想定します。
別の画像タイプで保存/出力したい場合は、(サポートされている) PHP IMAGETYPE_
* 定数を渡す必要があります。
IMAGETYPE_GIF
IMAGETYPE_JPEG
IMAGETYPE_PNG
これにより、ソースに別のタイプで保存できるようになります。
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resize ( 800 , 600 );
$ image -> save ( ' image.png ' , IMAGETYPE_PNG );
$quality_jpg
、 $quality_webp
、 $quality_png
のプロパティを設定できます。
$ image = new ImageResize ( ' image.jpg ' );
$ image -> quality_jpg = 100 ;
$ image -> resize ( 800 , 600 );
$ image -> save ( ' image2.jpg ' );
デフォルトでは、それぞれ 85 と 6 に設定されています。詳細については、 imagejpeg()
およびimagepng()
のマニュアルエントリを参照してください。
品質をsave()
、 output()
およびgetImageAsString()
メソッドに直接渡すこともできます。
$ image = new ImageResize ( ' image.jpg ' );
$ image -> crop ( 200 , 200 );
$ image -> save ( ' image2.jpg ' , null , 100 );
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resizeToWidth ( 300 );
$ image -> output ( IMAGETYPE_PNG , 4 );
$ image = new ImageResize ( ' image.jpg ' );
$ image -> scale ( 50 );
$ result = $ image -> getImageAsString ( IMAGETYPE_PNG , 4 );
上の例では画像タイプにnull
を渡して、スキップして品質を提供しています。この場合、画像タイプは入力と同じであるとみなされます。
デフォルトでは、画像のインターレースはオンになっています。 $interlace
0
に設定することで無効にできます。
$ image = new ImageResize ( ' image.jpg ' );
$ image -> scale ( 50 );
$ image -> interlace = 0 ;
$ image -> save ( ' image2.jpg ' );
操作を実行するときに元のイメージが保持されるため、過度に破壊することなく操作を連鎖させることができます。
これは、複数のサイズを作成する場合に便利です。
$ image = new ImageResize ( ' image.jpg ' );
$ image
-> scale ( 50 )
-> save ( ' image2.jpg ' )
-> resizeToWidth ( 300 )
-> save ( ' image3.jpg ' )
-> crop ( 100 , 100 )
-> save ( ' image4.jpg ' )
;
ImageResize は、エラーが発生した場合に ImageResizeException をスローします。それをキャッチすることも、それが拡張している一般的な Exception をキャッチすることもできます。
これは予想されることではありませんが、途中で何かがひどく間違っている場合は、PHP GD および Image 関数 (http://php.net/manual/en/ref.image.php) からエラーが表示されるか警告される可能性があります。
try {
$ image = new ImageResize ( null );
echo " This line will not be printed " ;
} catch ( ImageResizeException $ e ) {
echo " Something went wrong " . $ e -> getMessage ();
}
新しい画像にぼかしやバナーの追加などの特殊効果を適用できます。
$ image = new ImageResize ( ' image.jpg ' );
// Add blure
$ image -> addFilter ( function ( $ imageDesc ) {
imagefilter ( $ imageDesc , IMG_FILTER_GAUSSIAN_BLUR );
});
// Add banner on bottom left corner
$ image18Plus = ' banner.png '
$ image -> addFilter ( function ( $ imageDesc ) use ( $ image18Plus ) {
$ logo = imagecreatefrompng ( $ image18Plus );
$ logo_width = imagesx ( $ logo );
$ logo_height = imagesy ( $ logo );
$ image_width = imagesx ( $ imageDesc );
$ image_height = imagesy ( $ imageDesc );
$ image_x = $ image_width - $ logo_width - 10 ;
$ image_y = $ image_height - $ logo_height - 10 ;
imagecopy ( $ imageDesc , $ logo , $ image_x , $ image_y , 0 , 0 , $ logo_width , $ logo_height );
});
指定されたモードを使用して画像を反転します。このメソッドは PHP バージョン 5.4 専用です。
$ flip = new ImageResize ( ' image.png ' );
$ image = imagecreatetruecolor ( 200 , 100 );
$ image -> addFilter ( function ( $ image ) {
imageflip ( $ image , IMG_FLIP_HORIZONTAL );
});
両方の関数は追加された順序で使用されます。
デフォルトでは無効になっているガンマ色補正を有効にできます。
$ image = new ImageResize ( ' image.png ' );
$ image -> gamma ( true );
https://gumlet.github.io/php-image-resize/index.html
このライブラリは Gumlet.com によって管理されています