サイトを更新しています。 数日間、レイアウトや翻訳に不具合が出ることがあります。ドキュメントは引き続きご利用いただけます。表示が崩れている場合は、後ほど再読み込みしてください。

ホーム image 3.x インスタンス化

インスタンス化

3.x 2026年3月7日

#画像の読み込み

#画像ソースの読み込み

public ImageManager::read(mixed $input, string|array|DecoderInterface $decoders = []): ImageInterface

設定済みの Image Manager を使うと、さまざまなソースから画像を読み込むことができます。メソッドはファイルシステム上のパスだけでなく、バイナリ画像データ、Base64 エンコードされた画像データ、Data Uri 形式の画像も受け付けます。さらに、さまざまなオブジェクトや PHP のリソースを入力として渡すことも可能です。受け付ける入力の一覧は下記を参照してください。

#パラメータ

Name Type Description
input mixed 画像ソース
decoders string, array or DecoderInterface 入力データを処理するデコーダー。デフォルトではデコーダーは自動的に検出されます

#サポートされる画像ソース

次の input 引数の形式が受け付けられます。

  • ファイルシステム内のパス
  • 生の(バイナリ)画像データ
  • Base64 エンコードされた画像データ
  • Data URI
  • ファイルポインタリソース
  • SplFileInfoIlluminate\Http\UploadedFileSymfony\Component\HttpFoundation\File\UploadedFile の派生元)
  • Intervention Image のインスタンス (Intervention\Image\Image)
  • エンコードされた Intervention Image (Intervention\Image\EncodedImage)
  • ドライバー固有の画像(GDImage または Imagick のインスタンス)

入力データをデコードするために、第2引数でデコード戦略を指定できます。これはクラス名のarrayまたは順に処理されるデコーダーのオブジェクトの配列で指定できます。この場合、入力は渡したデコーダーのいずれかでデコード可能である必要があります。単一のデコーダーオブジェクトやクラス名を渡すことも可能です。

DecoderInterface::class を実装するすべてのデコーダーを渡せます。通常は Intervention\Image\Decoders 名前空間のクラス群が選ばれます。

第2引数を省略した場合、ドライバーは利用可能なすべてのデコーダーを使ってデコードを試みます。渡された引数がライブラリでデコードできない場合、Intervention\Image\Exceptions\DecoderException 型の例外がスローされます。

#

use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Imagick\Driver;

// 希望するドライバーで新しいマネージャーインスタンスを作成
$manager = new ImageManager(new Driver());

// ファイルシステムから画像を読み込む
$image = $manager->read('images/example.jpg');

// バイナリデータから画像を読み込む
$image = $manager->read(file_get_contents('images/example.jpg'));
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Imagick\Driver;
use Intervention\Image\Decoders\DataUriImageDecoder;
use Intervention\Image\Decoders\Base64ImageDecoder;
use Intervention\Image\Decoders\FilePathImageDecoder;

// 希望するドライバーで新しいマネージャーインスタンスを作成
$manager = new ImageManager(new Driver());

// Data URI または Base64 エンコードデータのみから画像を読み込む
$image = $manager->read($input, [
    DataUriImageDecoder::class,
    Base64ImageDecoder::class,
]);

// ファイルパスからのみ画像を読み込む
$image = $manager->read($input, FilePathImageDecoder::class);

// クラス名の代わりにオブジェクトを渡す場合
$image = $manager->read($input, new FilePathImageDecoder());

#画像の作成

#新しい画像の作成

public ImageManager::create(int $width, int $height): ImageInterface

既存の画像ソースを読み込むことはできますが、自分で画像を作成したい場合もあるでしょう。Intervention Image はその手助けをします。まず Intervention\Image\ImageManager クラスのインスタンスを用意し、必要な画像サイズを引数にして create() メソッドを呼び出します。例は以下のとおりです:

デフォルトでは画像は透明な背景で作成されます。背景色を指定したい場合は、作成後に fill() メソッドを使用してください。

#パラメータ

Name Type Description
width integer 画像の幅
height integer 画像の高さ

#

use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Imagick\Driver;

// 希望するドライバーで新しいマネージャーインスタンスを作成
$manager = new ImageManager(Driver::class);

// 640x480 の新しい画像を作成
$image = $manager->create(640, 480);

// グレーの背景で 512x512 の新しい画像を作成
$image = $manager->create(512, 512)->fill('ccc');

#アニメーションの作成

public ImageManager::animate(callable $callback): ImageInterface

アニメーション画像を作成することもできます。そのためには "animate" 関数を使用します。この関数にはコールバック関数を渡し、各アニメーションフレームのソースと遅延時間を決定します。こうして作成されたアニメーションは、アニメーションをサポートするフォーマットで出力される点に注意してください。

すべての提供ドライバーでアニメーションが可能です。 アニメーション画像の編集方法の詳細はこちら

#パラメータ

Name Type Description
callback callable アニメーションの設定

#

use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Gd\Driver;

// 希望するドライバーで新しいマネージャーインスタンスを作成
$manager = new ImageManager(new Driver());

// 3 フレームのアニメーションを作成し、各フレームの遅延を 250ms に設定
$image = $manager->animate(function ($animation) {
    $animation->add('images/frame01.png', .25);
    $animation->add('images/frame02.png', .25);
    $animation->add('images/frame03.png', .25);
})->setLoops(4);
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Imagick\Driver;

// 希望するドライバーで新しいマネージャーインスタンスを作成
$manager = new ImageManager(Driver::Class);

// drawCircle メソッドで独自のアニメーションフレームを作成して、
// ループする 5 フレームのサークルアニメーションを作成
$animation = $manager->animate(function ($animation) use ($manager) {
    for ($i = 1; $i <= 5; $i++) {
        $animation->add(
            $manager->create(300, 300) // フレームサイズ
                ->fill('b53717') // フレームの背景色
                ->drawCircle(150, 150, function ($circle) use ($i) {
                    $circle->radius(40 * $i); // 円の半径(ピクセル)
                    $circle->border('fff', 5); // 枠線の色と太さ
                }),
            .15 // フレームの遅延
        );
    }
})->setLoops(10);