All Articles

PHP | 画像操作 Intervention Image

Intervention Imageのメソッドを理解するためのメモ。

Imageを作る方法

すべての操作はImageインスタンス上で行われます、Imageインスタンスは下記のメソッドから作ることができます。

canvas

ソースを指定して、Imageインスタンスを生成します。

引数は下記の3つがあります。

  • width: 幅を指定します。
  • height: 高さを指定します。
  • bgcolor: 背景色を指定します、指定しなかった場合は透過になります。
// 幅:800、高さ:600の透明背景のImageインスタンスを生成します。
$img = Image::canvas(800, 600);

// 幅:32、高さ:32の赤色背景のImageインスタンスを生成します。
$img = Image::canvas(32, 32, '#ff0000');

make

幅と高さ、背景色を指定して、Imageインスタンスを生成します。

引数は下記の1つがあります。

  • source: Imageインスタンスのソースを指定します。指定できるソースは下記の通りです。

    • string - ファイルシステムのパスを指定し、指定したファイルをもとにImageインスタンスを生成します。
    • string - 画像URLを指定し、指定した画像URLのをもとにImageインスタンスを生成します。(指定した画像URLに対して、allowurlfopenが有効になっている必要があります。)
    • string - バイナリーイメージデータをもとにImageインスタンスを生成します。
    • string - Data-URL encodedデータをもとにImageインスタンスを生成します。
    • string - Base64 encoded データをもとにImageインスタンスを生成します。
    • object - 別のIntervention\Image\Imageインスタンスを使用して生成します。
    • resource - PHP resource of type gd. (when using GD driver)
    • object - Imagick instance (when using Imagick driver)
    • object - SplFileInfo instance (To handle Laravel file uploads via Symfony\Component\HttpFoundation\File\UploadedFile)
// ファイルからImageインスタンスを生成する。
$img = Image::make('public/foo.jpg');

// バイナリーデータからImageインスタンスを生成する。
$img = Image::make(file_get_contents('public/foo.jpg'));

// gdリソースからImageインスタンスを生成する。
$img = Image::make(imagecreatefromjpeg('public/foo.jpg'));

// 画像URLからImageインスタンスを生成する。
$img = Image::make('http://example.com/example.jpg');

// create a new image directly from Laravel file upload
// Laravelでアップロードされたファイルから、直接Imageインスタンスを生成する。
$img = Image::make(Input::file('photo'));

Imageに図形を挿入する方法

Imageに図形を挿入するには下記のメソッドを使用します。

pixel

座標をして、画像のピクセルの色を変更します。

引数は下記の3つがあります。

  • color: ピクセルの色を指定します
  • x: ピクセルのx座標を指定します。
  • y: ピクセルのy座標を指定します。
$img = Image::canvas(100, 100, '#ddd');

// 座標(32, 32)のピクセルを青色に変更します。
$img->pixel('#0000ff', 32, 32);

// 座標(64, 64)のピクセルを赤色に変更します。
$img->pixel('#ff0000', 64, 64);

line

開始点と終了点を指定して、画像に線を引きます。 引数は下記の5つがあります。

  • x1: 開始点のx座標を指定します。
  • y1: 開始点のy座標を指定します。
  • x2: 終了点のx座標を指定します。
  • y2: 終了点のy座標を指定します。
  • callback: 線の色や幅を指定するには、コールバックを指定します。この引数はオプションです。
$img = Image::canvas(100, 100, '#ddd');

// 開始点(10,10)から終了点(100,10)まで青色の線を引きます。
$img->line(10, 10, 100, 10, function ($draw) {
    $draw->color('#0000ff');
});

// 開始点(10,10)から終了点(195,195)まで、幅5pixelの赤色の線を引きます。
$img->line(10, 10, 195, 195, function ($draw) {
    $draw->color('#f00');
    $draw->width(5);
});

rectangle

左上点と右下点を指定して、画像に四角形を描画します。

引数は下記の5つがあります。

  • x1: 左上点のx座標を指定します。
  • y1: 左上点のy座標を指定します。
  • x2: 右下点のx座標を指定します。
  • y2: 右下点のy座標を指定します。
  • callback: 線の色や幅、背景色を指定するには、コールバックを指定します。この引数はオプションです。
$img = Image::canvas(100, 100, '#ddd');

// 左上点(10,10)から右下点(190,190)枠線のみの四角形を描画する。
$img->rectangle(10, 10, 190, 190);

// 左上点(5,5)から右下点(190,190)の赤で塗りつぶされた四角形を描画する。
$img->rectangle(5, 5, 195, 195, function ($draw) {
    $draw->background('#ff0000');
});

// 左上点(5,5)から右下点(195,195)の2pxの枠線を持つ、透明な四角形を描画する。
$img->rectangle(5, 5, 195, 195, function ($draw) {
    $draw->background('rgba(255, 255, 255, 0.5)');
    $draw->border(2, '#000');
});

circle

中心点と直径を指定して、画像に円を描画します。

引数は下記の4つがあります。

  • diameter: 円の直径をpixelsで指定します。
  • pos_x: 中心点のx座標を指定します。
  • pos_y: 中心点のy座標を指定します。
  • callback: 線の色や幅、背景色を指定するには、コールバックを指定します。この引数はオプションです。
$img = Image::canvas(300, 200, '#ddd');

// 中心点(50,50)、直径100pixelsで青色で塗りつぶされた円を描画します。
$img->circle(100, 50, 50, function ($draw) {
    $draw->background('#0000ff');
});

// 中心点(100,100)、直径10pixelsで、赤枠線を持ち、青色で塗りつぶされた円を描画します。
$img->circle(10, 100, 100, function ($draw) {
    $draw->background('#0000ff');
    $draw->border(1, '#f00');
});

// 中心点(150,100)、直径70pixelsで、幅5pixelの枠線を持つ、透明な円を描画します。
$img->circle(70, 150, 100, function ($draw) {
    $draw->border(5, '000000');
});

ellipse

中心点と幅、高さを指定して、画像に楕円を描画します。

引数は下記の5つがあります。

  • width: 楕円の幅を指定します。
  • height: 楕円の高さを指定します。
  • x: 中心点のx座標を指定します。
  • y: 中心点のy座標を指定します。
  • callback: 線の色や幅、背景色を指定するには、コールバックを指定します。この引数はオプションです。
$img = Image::canvas(800, 600, '#ddd');

// 中心点(50,50)、幅25、高さ30の青色で塗りつぶされた楕円を描画します。
$img->ellipse(25, 30, 50, 50, function ($draw) {
    $draw->background('#0000ff');
});

// 中心点(100,100)、幅60、高さ120の、幅1ピクセルの赤い色の枠線を持ち、青色で塗りつぶされた楕円を描画します。
$img->ellipse(60, 120, 100, 100, function ($draw) {
    $draw->background('#0000ff');
    $draw->border(1, '#ff0000');
});

// 中心点(300,200)、幅150、高さ200の、幅5ピクセルの黒い色の枠線を持ち、透明な楕円を描画します。
$img->ellipse(150, 200, 300, 200, function ($draw) {
    $draw->border(5, 'fff');
});

polygon

座標を複数指定して、画像に多角形を描画します。

引数は下記の2つがあります。

  • points: 多角形の座標を一次元配列で指定します、奇数要素番号がx座標、偶数要素番号がy座標になります。
  • callback: 線の色や幅、背景色を指定するには、コールバックを指定します。この引数はオプションです。
$img = Image::canvas(800, 600, '#ddd');

// 多角形の座標を配列で指定します。
$points = [
    40,  50,  // 座標1 (x, y)
    20,  240, // 座標2 (x, y)
    60,  60,  // 座標3 (x, y)
    240, 20,  // 座標4 (x, y)
    50,  40,  // 座標5 (x, y)
    10,  10   // 座標6 (x, y)
];

// 赤い枠線で青色で塗りつぶされた多角形を描画します。
$img->polygon($points, function ($draw) {
    $draw->background('#0000ff');
    $draw->border(1, '#ff0000');
});

Imageに文字を挿入する

text

文字列と座標を指定して、画像にテキストを描画します。

引数は下記の4つがあります。

  • text: 画像に挿入する文字列を指定します。
  • x: x座標を指定します。
  • y: y座標を指定します。
  • callback: 文字のフォントを決める、コールバックを指定します。このコールバックは、Intervention\Image\Fontインスタンスが渡されます。インスタンスのメソッドを利用して文字の詳細な見た目を設定します。この引数はオプションです。
$img = Image::make('public/foo.jpg');

// 文字列を描画します。
$img->text('The quick brown fox jumps over the lazy dog.');

// 左上点(12, 100)の位置に文字列を描画します。
$img->text('The quick brown fox jumps over the lazy dog.', 120, 100);

Intervention\Image\Fontで文字の詳細を変更する

  • file: フォントを設定するメソッドです。フォントファイルへのパスを指定します。
  • size: 文字のサイズをピクセルで設定するメソッドです。
  • color: 文字の色を設定するメソッドです。
  • align: 文字列の横方向のアライメントを設定することができます。設定できる値は、 left, right, centerがあります。
  • valign: 文字列の縦方向のアライメントを設定することができます。設定できる値は、 top, bottom, middleがあります。
  • angle: 文字列の角度を設定することができます。角度は、基準点を中心に反時計回りに適用されます。フォントファイルが設定されている場合だけこのメソッドは適用されます。フォントファイルが設定されていない場合は無視されます。
$img = Image::make('public/foo.jpg');

// コールバックを指定して、文字の詳細を変更します。
$img->text('foo', 0, 0, function($font) {
    // フォントファイルの設定
    $font->file('foo/bar.ttf');
    // 文字のサイズを設定
    $font->size(24);
    // 文字の色を設定
    $font->color('#fdf6e3');
    // 水平方向の基準を設定
    $font->align('center');
    // 垂直方向の基準を設定
    $font->valign('top');
    // 文字の角度を設定
    $font->angle(45);
});

// 半透明の文字を描画します。
$img->text('foo', 0, 0, function($font) {
    $font->color([255, 255, 255, 0.5]);
});

Imageに別のImageを挿入する

insert

Imageインスタンスに別のImageインスタンスをインサートします。

引数は下記の4つがあります。

  • source: 挿入するImageインスタンスのソースを指定します。指定できるソースは下記の通りです。

    • string - ファイルシステムのパスを指定し、指定したファイルをもとにImageインスタンスを生成します。
    • string - 画像URLを指定し、指定した画像URLのをもとにImageインスタンスを生成します。(指定した画像URLに対して、allowurlfopenが有効になっている必要があります。)
    • string - バイナリーイメージデータをもとにImageインスタンスを生成します。
    • string - Data-URL encodedデータをもとにImageインスタンスを生成します。
    • string - Base64 encoded データをもとにImageインスタンスを生成します。
    • object - 別のIntervention\Image\Imageインスタンスを使用して生成します。
    • resource - PHP resource of type gd. (when using GD driver)
    • object - Imagick instance (when using Imagick driver)
    • object - SplFileInfo instance (To handle Laravel file uploads via Symfony\Component\HttpFoundation\File\UploadedFile)
  • position: Imageインスタンスを挿入する位置を指定します。ここで指定した値を基準として、x,yで座標を調整した場所にImageインスタンスが挿入されます。指定できる値は下記の通りです。

    • top-left (default)
    • top
    • top-right
    • left
    • center
    • right
    • bottom-left
    • bottom
    • bottom-right
  • x: Imageインスタンスを挿入するx方向のオフセットを指定します。
  • y: Imageインスタンスを挿入するy方向のオフセットを指定します。
$img = Image::make('public/foo.jpg');

// ファイルの画像を挿入、挿入位置は左上になります。
$img->insert('public/bar.png');

// Imageインスタンスを挿入、挿入位置は中央になります。
$watermark = Image::make('public/watermark.png');
$img->insert($watermark, 'center');

// Imageインスタンスを挿入、挿入位置は左下から、水平方向に10,垂直方向に10の位置になります。
$img->insert('public/watermark.png', 'bottom-right', 10, 10);

Imageのメタデータを取得する方法

height

Imageインスタンスの高さを取得します。

// ファイルから生成したImageインスタンスの高さを取得します。
$height = Image::make('public/foo.jpg')->height();

width

Imageインスタンスの幅を取得します。

// ファイルから生成したImageインスタンスの幅を取得します。
$height = Image::make('public/foo.jpg')->width();

exif

Imageインスタンスの、生成元ファイルに付属するExifメタデータを取得します。 引数は下記の1つがあります。

  • key: Exifメタデータのキーを指定します。この引数はオプションで、指定しない場合はすべてのExifメタデータを取得します。
// すべてのExifメタデータを配列で取得します。
$data = Image::make('public/foo.jpg')->exif();

// すべてのExifメタデータから、キーを指定して取得します。
$name = Image::make('public/foo.jpg')->exif('Model');

orientate

Imageインスタンスの、生成元ファイルに付属するExifメタデータから'Orientation'の値を取得します。

// Exifメタデータからauto-orientationの値を取得します。
$img = Image::make('foo.jpg')->orientate();

iptc

Imageインスタンスの、生成元ファイルに付属するIPTCメタデータを取得します。 引数は下記の1つがあります。

  • key: IPTCメタデータのキーを指定します。この引数はオプションで、指定しない場合はすべてのIPTCメタデータを取得します。
// すべてのIPTCタデータを配列で取得します。
$data = Image::make('public/foo.jpg')->iptc();

// すべてのIPTCメタデータから、キーを指定して取得します。
$name = Image::make('public/foo.jpg')->iptc('Copyright');

basePath

完全修飾パスの取得 実際のファイルからインスタンスが開始された場合、現在のイメージのベースパスを取得します。

// create an image
$img = Image::make('public/foo.jpg');

// get file path
$path = $img->basePath();

filesize

現在の画像のファイルサイズを取得する インスタンスが実際のファイルから開始された場合、現在のイメージのファイルサイズを取得します。

// create an image
$img = Image::make('public/foo.jpg');

// get file size
$size = $img->filesize();

mime

現在の画像のMIME Typeを取得する 現在の画像インスタンスの MIME Type を読み込む(すでに定義されている場合)。

// create an image
$img = Image::make('public/foo.jpg');
// get mime
$mime = $img->mime();

Imageの設定を変更する

blur

指定した画像にガウシアンブラーフィルタを任意の量で適用します。 引数は下記の1つがあります。

  • amount: ブラーの強さを指定します。0から100の間の数値を指定できます。デフォルトは1です。
// create new Intervention Image
$img = Image::make('public/foo.jpg');

// 弱いブラーを適用します。
$img->blur();

// 強いブラーを適用します。
$img->blur(15);

sharpen

画像に対してシャープ化処理を適用します。 引数は下記の1つがあります。

  • amount: シャープ化の強さを指定します。0から100の間の数値を指定できます。
// create new Intervention Image
$img = Image::make('public/foo.jpg');

// sharpen image
$img->sharpen(15);

brightness

現在の画像の明るさを指定されたレベルだけ変更します。最小の明るさには-100、変化なしには0、最大の明るさには+100の間の値を使用します。

引数は下記の1つがあります。

  • level: 現在の画像の輝度から変更するレベルを指定します。レベルは、-100から100の間の数値を指定できます。
// create new Intervention Image
$img = Image::make('public/foo.jpg');

// increase brightness of image
$img->brightness(35);

contrast

現在の画像のカラーコントラストを変更する 現在の画像のコントラストを指定されたレベルだけ変更します。最小コントラストは-100、変化なしは0、最大コントラストは+100の間の値を使用します。 引数は下記の1つがあります。

  • level: 現在のカラーコントラストから変更するレベルを指定します。レベルは、-100から100の間の数値を指定できます。
// create new Intervention Image
$img = Image::make('public/foo.jpg');

// increase brightness of image
$img->contrast(65);

gamma

現在の画像にガンマ補正を適用する 引数は下記の1つがあります。

  • correction: ガンマ補正値
// create new Intervention Image
$img = Image::make('public/foo.jpg');

// apply gamma correction
$img->gamma(1.6);

colorize

現在の画像のカラーバランスを変更する 現在のイメージのRGBカラー値を、指定されたチャンネルの赤、緑、青に変更します。入力値は正規化されているので、最大色値を表す100からパラメータを含める必要があります 0は変化なし、-100はイメージ上の特定の色をすべて取り去ります。 引数は下記の3つがあります。

  • red: 画像上の赤色の量を追加または削除します。値は-100から+100の間で使用します。
  • green: 画像上の緑色の量を追加または削除します。値は-100から+100の間で使用します。
  • blue: 画像上の青色の量を追加または削除します。値は-100から+100の間で使用します。
// create new Intervention Image
$img = Image::make('public/foo.jpg');

// 赤色を取り除いて、青色を追加します。
$img->colorize(-100, 0, 100);

// just add a little green tone to the image
$img->colorize(0, 30, 0);

greyscale

グレイスケール化する

$img = Image::make('public/foo.jpg');
$img->greyscale();

invert

現在の画像の色を反転させる

$img = Image::make('public/foo.jpg');
$img->invert();

pixelate

現在の画像にピクセレーションフィルタを適用する 現在の画像に、指定されたピクセル数でピクセル化効果を適用します。 引数は下記の1つがあります。

  • size: ピクセルのサイズ
// create new Intervention Image
$img = Image::make('public/foo.jpg');

// apply pixelation effect
$img->pixelate(12);

flip

現在の画像を垂直方向または水平方向に反転するします。 引数は下記の1つがあります。

  • mode: 反転するモードを指定します。'h'で水平反転、'v'で垂直反転が設定できます。デフォルトでは水平反転になっています。
// create Image from file
$img = Image::make('public/foo.jpg');

// flip image vertically
$img->flip('h');

rotate

現在の画像を回転させます。 現在の画像を、指定された角度だけ反時計回りに回転させます。オプションで、回転後の覆われていない部分の背景色を定義することができます。 また、回転後の画像がすべて収まるようにキャンバスサイズが自動的に変更されます。 引数は下記の2つがあります。

  • angle: 画像を反時計回りに回転させる回転角度を度数で指定します。
  • bgcolor: 回転した結果できる、画像が当たらないゾーンの背景色を設定します。
// create Image from file
$img = Image::make('public/foo.jpg');

// rotate image 45 degrees clockwise
$img->rotate(-45);

Imageを変形する

heighten

画像を与えられた高さに比例してリサイズする 現在の画像を新しい高さにリサイズし、アスペクト比を制限します。3番目のパラメータとして、オプションのクロージャコールバックを渡すと、アップサイジングの可能性を防ぐなど、追加の制約を適用することができます。 引数は下記の2つがあります。

  • height: 画像の新しい高さを指定します。
  • callback: 画像の不要なアップサイジングを防ぐための制約を定義するクロージャコールバック。以下の例を参照。

    • constraint: upsizeメソッドを呼ぶことで、画像が元のサイズよりも大きな画像にアップサイズされないようにする。
// 新しい高さに変更します。
$img = Image::make('public/foo.jpg')->heighten(100);

// 元のサイズを超えるような変更を無視します。
$img = Image::make('public/foo.jpg')->heighten(5000, function ($constraint) {
    $constraint->upsize();
});

widen

画像を与えられた幅に比例してリサイズする 現在の画像を新しい幅にリサイズし、アスペクト比を制限します。3番目のパラメータとして、オプションのクロージャコールバックを渡すと、アップサイジングの可能性を防ぐなど、追加の制約を適用することができます。 引数は下記の2つがあります。

  • width: 画像の新しい幅を指定します。
  • callback: リサイズに関する制約を定義するクロージャコールバック。以下の例を参照。

    • aspectRatio: アスペクト比を制限します。
    • upsize: 画像が元のサイズよりも大きな画像にアップサイズされないようにする。
// 新しい幅に変更します。
$img = Image::make('public/foo.jpg')->width(100);

// 元のサイズを超えるような変更を無視します。
$img = Image::make('public/foo.jpg')->width(5000, function ($constraint) {
    $constraint->upsize();
});

resize

画像をリサイズします。 幅・高さのどちらかもしくは両方を与えて、画像をリサイズします。 引数は下記の3つがあります。

  • width: 画像の新しい幅を指定します。
  • height: 画像の新しい高さを指定します。
  • callback: 画像の不要なアップサイジングを防ぐための制約を定義するクロージャコールバック。以下の例を参照。

    • constraint: upsizeメソッドを呼ぶことで、画像が元のサイズよりも大きな画像にアップサイズされないようにする。
// アスペクト比を維持せずに、幅:300,高さ:200にリサイズします。
$img->resize(300, 200);

// アスペクト比を維持せずに、幅:300のみリサイズします。
$img->resize(300, null);

// アスペクト比を維持せずに、高さ:200のみリサイズします。
$img->resize(null, 200);

// アスペクト比を維持しつつ、幅:300、高さは自動で計算されリサイズします。
$img->resize(300, null, function ($constraint) {
    $constraint->aspectRatio();
});

// アスペクト比を維持しつつ、高さ:200、幅は自動で計算されリサイズします。
$img->resize(null, 200, function ($constraint) {
    $constraint->aspectRatio();
});

// アスペクト比を維持しつつ、高さ:400、幅は自動で計算されリサイズします。また、オリジナルを超えるようなアップサイズがおこなわれないように制限します。
$img->resize(null, 400, function ($constraint) {
    $constraint->aspectRatio();
    $constraint->upsize();
});

// 最大側が制限内に収まるように画像をリサイズし、小さい側は元の縦横比を維持するように拡大縮小されます。
$img->resize(400, 400, function ($constraint) {
    $constraint->aspectRatio();
    $constraint->upsize();
});

resizeCanvas

現在の画像の境界をリサイズする 現在の画像の境界を、指定された幅と高さにリサイズします。アンカーを定義することで、画像のどの位置からリサイズを行うかを決定することができる。モードを相対に設定すると、実際の画像の寸法に与えられた幅や高さが加算または減算されます。また、画像に現れる領域の背景色を渡すこともできます。 引数は下記の5つがあります。

  • width: 絶対モードで画像の新しい幅をピクセル単位で指定するか、相対モードで高さを加減するピクセル数。
  • height: 絶対モードで画像の新しい高さをピクセル単位で指定するか、相対モードで高さに加算または減算するピクセル数を指定します。
  • anchor: 画像のリサイズが行われるポイントを設定します。例えば、アンカーを左下に設定している場合、こちら側が固定され、画像の右上にwidth/heightの値が加減されることになります。使用できる値は下記の通りです。

    • top-left
    • top
    • top-right
    • left
    • center (default)
    • right
    • bottom-left
    • bottom
    • bottom-right
  • relative: リサイズが相対モードで行われることを決定します。つまり、幅や高さの値は、画像の現在の高さから加算または減算されます。デフォルト:false
  • bgcolor: 画像の新しい領域の背景色。背景色は、さまざまなカラーフォーマットで渡すことができます。デフォルトは #出力形式がサポートしている場合は、透明。
// create Image from file
$img = Image::make('public/foo.jpg');

// 描画領域のリサイズを行います。
$img->resizeCanvas(300, 200);

// 描画領域の幅を指定してリサイズを行います。高さ方向の変化はありません
$img->resizeCanvas(300, null);

// 描画領域の高さを指定してリサイズを行います。幅方向の変化はありません
$img->resizeCanvas(null, 200);

// 基準点を指定して描画領域のリサイズを行います。
$img->resizeCanvas(300, 200, 'bottom-right');

// 現在のキャンバスサイズ(幅、高さ)に対して相対的な値を設定してリサイズを行う。現状の幅に10を引いた幅と高さに10を足した高さでリサイズされる
$img->resizeCanvas(10, -10, 'center', true);

// リサイズによって発生した空白地の色を指定することができます。
$img->resizeCanvas(1280, 720, 'center', false, 'ff00ff');

fit

現在の画像の矩形部分を切り出し、サイズを変更する スマートな方法で画像をフォーマットするためにトリミングとリサイズを組み合わせます。 このメソッドは、与えられた幅と高さの最適なアスペクト比を現在の画像から自動的に見つけ出し、それを切り取って与えられた寸法にリサイズします。 3番目のパラメータとしてオプションのクロージャコールバックを渡すことができ、 可能なアップサイジングと4番目のパラメータとして切り取りのカスタム位置を防ぐために。

引数は下記の4つがあります。

  • width: 画像を最適なアスペクト比に切り出した後にリサイズされる幅です。
  • height: 最適なアスペクト比に切り出した後、画像がリサイズされる高さを指定します。高さが指定されない場合、このメソッドは幅と同じ値を使用します。
  • callback: 画像の不要なアップサイジングを防ぐための制約を定義するクロージャコールバック。以下の例を参照。

    • constraint: upsizeメソッドを呼ぶことで、画像が元のサイズよりも大きな画像にアップサイズされないようにする。
  • position: 切り出し位置を設定します。デフォルトでは、最適なアスペクト比が中央に配置されます。

    • top-left
    • top
    • top-right
    • left
    • center (default)
    • right
    • bottom-left
    • bottom
    • bottom-right
$img = Image::make('public/foo.jpg');

// 5:3(600x360)の比率で最適なクロップを行い、600x360ピクセルにリサイズします。
$img->fit(600, 360);

//  1:1の比率で最適に切り出し、200x200ピクセルにリサイズする
$img->fit(200);

// 元画像の最大サイズを保持するためのコールバック機能の追加
$img->fit(800, 600, function ($constraint) {
    $constraint->upsize();
});

crop

現在の画像から矩形部分を切り出す 現在の画像から,指定された幅と高さの矩形部分を切り出します.切り出した画像の左上隅を特定の位置に移動させるための x,y 座標をオプションで指定します。 引数は下記の4つがあります。

  • width: 画像から切り出す幅を指定します。
  • height: 画像から切り出す高さを指定します。
  • x: 切り出しの開始位置のx座標を指定します。
  • y: 切り出しの開始位置のy座標を指定します。
$img = Image::make('public/foo.jpg');

// crop image
$img->crop(100, 100, 25, 25);

trim

色ごとにパーツを切り離す 指定された色で画像空間を切り取る。オプションのベースを定義すると、特定の位置の色とトリミングされるべき境界を選択できます。 また、オプションで許容範囲を設定し、類似した色をトリミングし、トリミングされた画像の周りにフェザリングボーダーを追加することができます。

引数は下記の4つがあります。

  • base: トリミングカラーが選択されるポイントを定義します。例えば、このパラメータを右下に設定すると、イメージの左下隅の色に等しいすべての色が切り取られます。とりうる値は下記の通りです。

    • top-left
    • bottom-right
    • transparent
  • away: 切り取るべきボーダー(複数可)。複数のボーダーを追加することができます。指定可能な値は以下の通りです。

    • top
    • bottom
    • left
    • right
  • tolerance: 似たような色値を切り捨てるために、0から100の間でパーセント化された許容レベルを定義します。デフォルト:0
  • feather: トリミング中に、オブジェクトの周りに手つかずの「境界線」を残しておくと便利な場合があります。特に非固体背景をトリミングする場合、トリミングされたオブジェクトの周囲の空間を一定のピクセル数で拡大 (正の値) または縮小 (負の値) することができます。デフォルト: 0
// trim image (by default on all borders with top-left color)
Image::make('public/foo.jpg')->trim();

// trim image (on all borders with bottom-right color)
Image::make('public/foo.jpg')->trim('bottom-right');

// trim image (only top and bottom with transparency)
Image::make('public/foo.jpg')->trim('transparent', ['top', 'bottom']);

// trim image (only left side top-left color)
Image::make('public/foo.jpg')->trim('top-left', 'left');

// trim image on all borders (with 40% tolerance)
Image::make('public/foo.jpg')->trim('top-left', null, 40);

// trim image and leave a border of 50px by feathering
Image::make('public/foo.jpg')->trim('top-left', null, 25, 50);

fill

現在の画像を色やパターンで塗りつぶす 現在の画像を、指定された色、または塗りつぶしのタイルとして使用される別の画像で塗りつぶします。オプションの x, y 座標を渡すと、特定の位置から開始されます。 ある位置が定義されている場合、元画像のその位置の色が洪水のように塗りつぶしに使用されます。x,y座標が渡されない場合、下に何があっても画像全体が塗りつぶされます。

  • filling: 塗りつぶしの色または画像パターン。異なるカラーフォーマットの1つとして色を渡すか、またはタイルで画像を埋めるために、以下のフォーマットの画像リソースを渡します。

    • string - ファイルシステムにおける画像のパス.
    • string - 画像のURL(allowurlfopenが有効である必要があります).
    • string - バイナリ画像データ.
    • string - Data-URL エンコードされた画像データ.
    • string - Base64 でエンコードされた画像データ.
    • resource - gd 型の PHP リソース (GD ドライバを使用する場合)。
    • object - Imagick インスタンス (Imagick ドライバ使用時)
    • object - InterventionImageImage インスタンス。
    • object - SplFileInfo インスタンス (Symfony による Laravel のファイルアップロードを処理するため)
  • x: X軸のフィリングの開始点。
  • y: Y軸のフィリングの開始点。
// create empty canvas
$img = Image::canvas(800, 600);

// fill image with color
$img->fill('#cccccc');

// fill image with tiled image
$img->fill('tile.png');

// flood fill image with color
$img->fill('#ff00ff', 0, 0);

mask

現在の画像にアルファマスキングを適用する アルファマスクとして与えられたイメージソースを現在のイメージに適用し、現在の不透明度を変更します。マスクは、現在の画像サイズにリサイズされます。デフォルトでは、マスクのグレースケール版がアルファ値に変換されますが、 maskwithalpha を設定して実際のアルファチャンネルを適用することができます。現在の画像の透明度はすべて維持されます。

  • source: アルファマスクとして適用される画像ソース。このメソッドは,以下のような入力を扱うことができます.

    • string - ファイルシステムにおける画像のパス.
    • string - 画像のURL(allowurlfopenが有効である必要があります).
    • string - バイナリ画像データ.
    • string - Data-URL エンコードされた画像データ.
    • string - Base64 でエンコードされた画像データ.
    • resource - gd 型の PHP リソース (GD ドライバを使用する場合)。
    • object - Imagick インスタンス (Imagick ドライバ使用時)
    • object - InterventionImageImage インスタンス。
    • object - SplFileInfo インスタンス (Symfony による Laravel のファイルアップロードを処理するため)
  • maskwithalpha: カラー値ではなく、実際のアルファチャンネルをマスクとして現在のイメージに適用するには、これをtrueに設定します。デフォルト:false
// create new Intervention Image
$img = Image::make('public/foo.jpg');

// Apply another image as alpha mask on image
$img->mask('public/mask.png');

// Apply a second image with alpha channel masking
$img->mask('public/alpha.png', true);

opacity

現在の画像の不透明度を設定する 現在の画像の不透明度をパーセントで設定します。不透明度は100%、完全な透明度は0%です。

注意:大きな画像ではパフォーマンスが低下します。注意して使用してください。

  • transparency: 現在の画像の新しい透明度(整数値)。
// create Image from file and set transparency to 50%
Image::make('public/foo.jpg')->opacity(50);

// create new Intervention Image from file and set image full transparent
$img = Image::make('public/foo.jpg');
$img->opacity(0);

pickColor

現在の画像から色を選び出す 現在の画像から点x, yの色を選び,オプションで指定されたフォーマットで返します。

  • x: 色が取り出されるピクセルのx座標。
  • y: 色が取り出されるピクセルのy座標。
  • format: 種類から形成する色を選択します。

    • array: [255, 255, 255, 1]
    • rgb: rgb(255, 255, 255)
    • rgba: rgba(255, 255, 255, 0.5)
    • hex: #cccccc
    • int: 16776956
// create an image
$img = Image::make('public/foo.jpg');
$arraycolor = $img->pickColor(100, 100);
$intcolor = $img->pickColor(100, 100, 'array');
$intcolor = $img->pickColor(100, 100, 'rgba');
$hexcolor = $img->pickColor(100, 100, 'hex');
$intcolor = $img->pickColor(100, 100, 'int');

Imageの拡張子を変更する

  • encode

Imageにフィルターを適用する

  • filter

Core Formatを直接利用する

getCore

  • interlace
  • limitColors

Imageを保存する

stream psrResponse response save

Imageへの編集をやり直す方法

  • backup
  • reset

Imageのキャッシュ・メモリ戦略

  • cache
  • destroy