#画像のエンコード
#エンコーダーオブジェクトによる画像のエンコード
public Image::encode(EncoderInterface $encoder = new AutoEncoder()): EncodedImage
このメソッドは指定したエンコーダーオブジェクトで画像をエンコードします。現在利用可能なエンコーダーは次のとおりです。
Intervention\Image\Encoders\AutoEncoder::classIntervention\Image\Encoders\JpegEncoder::classIntervention\Image\Encoders\WebpEncoder::classIntervention\Image\Encoders\PngEncoder::classIntervention\Image\Encoders\GifEncoder::classIntervention\Image\Encoders\AvifEncoder::classIntervention\Image\Encoders\BmpEncoder::classIntervention\Image\Encoders\TiffEncoder::classIntervention\Image\Encoders\Jpeg2000Encoder::classIntervention\Image\Encoders\HeicEncoder::class
エンコーダーが渡されない場合、AutoEncoder が使用され、元の画像形式に基づいて出力フォーマットを自動的に判別します。
#パラメータ
| 名前 | 型 | 説明 |
|---|---|---|
| encoder(省略可) | EncoderInterface | 画像を変換するためのイメージエンコーダー |
#例
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Gd\Driver;
use Intervention\Image\Encoders\AutoEncoder;
use Intervention\Image\Encoders\WebpEncoder;
use Intervention\Image\Encoders\GifEncoder;
// 希望するドライバで新しいマネージャインスタンスを作成します
$manager = new ImageManager(Driver::class);
// JPEG 画像を読み込みます
$image = $manager->read('images/example.jpg');
// 読み込んだ元の画像形式でエンコードします
$encoded = $image->encode(); // Intervention\Image\EncodedImage
// 読み込んだ元の画像形式で、品質を指定してエンコードします
$encoded = $image->encode(new AutoEncoder(quality: 10)); // Intervention\Image\EncodedImage
// JPEG を webp 形式でエンコードします
$encoded = $image->encode(new WebpEncoder(quality: 65)); // Intervention\Image\EncodedImage
// 結果は gif 形式になります
$encoded = $image->encode(new GifEncoder()); // Intervention\Image\EncodedImage
#メディア(MIME)タイプによる画像のエンコード
public Image::encodeByMediaType(null|string|MediaType $type = null, mixed ...$options): EncodedImage
画像を指定したメディア(MIME)タイプにエンコードします。
メディアタイプが指定されない場合、元の画像の MIME タイプのフォーマットでエンコードされます。
#パラメータ
| 名前 | 型 | 説明 |
|---|---|---|
| type(省略可) | null, string or MediaType | 画像がエンコードされるターゲットのメディア(MIME)タイプ。デフォルトは元のメディアタイプです。 |
| options(省略可) | mixed | 出力フォーマットに応じたオプションパラメータ。 |
#例
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Gd\Driver;
use Intervention\Image\MediaType;
// 新しいマネージャーインスタンスを作成して webp 画像を読み込みます
$image = new ImageManager(Driver::class)
->read('images/example.webp');
// エンコード結果は元と同じになります
$encoded = $image->encodeByMediaType();
// エンコード結果は元と同じですが品質が低くなります
$encoded = $image->encodeByMediaType(quality: 10);
// エンコード結果はプログレッシブ JPEG 形式になります
$encoded = $image->encodeByMediaType('image/jpeg', progressive: true, quality: 20);
// 結果は GIF 形式になります
$encoded = $image->encodeByMediaType('image/gif');
// または MediaType 列挙型のメンバーを使用できます
$encoded = $image->encodeByMediaType(MediaType::IMAGE_GIF);
#ファイルパスによる画像のエンコード
public Image::encodeByPath(null|string $path = null, mixed ...$options): EncodedImage
指定したファイルパスの拡張子が表す形式に画像をエンコードします。エンコーダーのオプションを定義するためにオプションのパラメータを追加できます。パスが指定されない場合、元の画像の形式にエンコードされます。
このメソッドは指定されたパスに書き込むのではなく、ターゲット形式を抽出するためにそのパス情報を使用するだけです。
#パラメータ
| 名前 | 型 | 説明 |
|---|---|---|
| path(省略可) | null or string | ターゲット形式を抽出するファイルパス。デフォルトは元のファイルパスです。 |
| options(省略可) | mixed | 出力フォーマットに応じたオプションパラメータ。 |
#例
use Intervention\Image\ImageManager;
// 画像ファイルのパス
$path = 'images/example.png';
// 新しいマネージャーインスタンスを作成してパスから読み込みます
$image = new ImageManager::imagick() ->read($path);
// エンコード形式は元と同じになります
$encoded = $image->encodeByPath();
// 結果の形式は元と同じですが品質が低くなります
$encoded = $image->encodeByPath(quality: 10);
// "jpg" が JPEG 形式を表すため結果は JPEG になります
$encoded = $image->encodeByPath('images/example.jpg', progressive: true, quality: 10);
// 結果は GIF 形式になります
$encoded = $image->encodeByPath('images/example.gif');
#ファイル拡張子による画像のエンコード
public Image::encodeByExtension(null|string|FileExtension $extension = null, mixed ...$options): EncodedImage
指定したファイル拡張子が示す形式に画像をエンコードします。オプションの第二引数で画像品質を指定できます。拡張子が指定されない場合、元の画像の形式でエンコードされます。
#パラメータ
| 名前 | 型 | 説明 |
|---|---|---|
| extension(省略可) | null, string or FileExtension | ターゲット形式を決定するファイル拡張子。デフォルトは元のファイル拡張子です。 |
| options(省略可) | mixed | 出力フォーマットに応じたオプションパラメータ。 |
#例
use Intervention\Image\ImageManager;
// 新しいマネージャーインスタンスを作成して画像を読み込みます
$image = new ImageManager::gd() ->read('example.jpg');
// 結果の形式は元と同じになります
$encoded = $image->encodeByExtension();
// 結果の形式は元と同じですが品質が低くなります
$encoded = $image->encodeByExtension(quality: 10);
// 結果は JPEG 形式になります
$encoded = $image->encodeByExtension('jpg', progressive: true, quality: 10);
// 結果は PNG 形式になります
$encoded = $image->encodeByExtension('png');
// または FileExtension 列挙型のメンバーを使用できます
$encoded = $image->encodeByExtension(FileExtension::PNG);
#ショートカットメソッドでのエンコード
各画像形式に対応するショートカットメソッドがあり、画像オブジェクトから直接呼び出せます。
#JPEG形式のエンコード
public Image::toJpeg(int $quality = 75, bool $progressive = false, null|bool $strip = null): EncodedImage
現在の画像インスタンスをJPEG形式で、与えられた quality(0は低品質、100は最高品質)の値でエンコードします。
#パラメータ
| 名前 | 型 | 説明 |
|---|---|---|
| quality(省略可) | integer | エンコード品質。0〜100の範囲。デフォルトは75。 |
| progressive(省略可) | boolean | 画像をプログレッシブJPEG形式でエンコードするオプション。デフォルトでは無効です。 |
| strip(省略可) | bool | エンコード時に画像メタデータを削除するかどうかを決定します。デフォルトはドライバー設定 の値です。 |
#例
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Gd\Driver;
// 指定したドライバーで新しいマネージャーインスタンスを作成します
$manager = new ImageManager(Driver::class);
// GIF 画像を読み込みます
$image = $manager->read('images/example.gif');
// JPEG データをエンコードします
$encoded = $image->toJpeg(90); // Intervention\Image\EncodedImage
#WebP形式のエンコード
public Image::toWebp(int $quality = 75, null|bool $strip = null): EncodedImage
現在の画像インスタンスをWebP形式で、与えられた quality(0は低品質、100は最高品質)の値でエンコードします。
#パラメータ
| 名前 | 型 | 説明 |
|---|---|---|
| quality(省略可) | integer | エンコード品質。デフォルトは75。 |
| strip(省略可) | bool | エンコード時に画像メタデータを削除するかどうかを決定します。デフォルトはドライバー設定 の値です。 |
#例
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Imagick\Driver;
// 指定したドライバーで新しいマネージャーインスタンスを作成します
$manager = new ImageManager(new Driver());
// GIF 画像を読み込みます
$image = $manager->read('images/example.gif');
// WebP データをエンコードします
$encoded = $image->toWebp(60); // Intervention\Image\EncodedImage
#PNG形式のエンコード
public Image::toPng(bool $interlaced = false, bool $indexed = false): EncodedImage
このメソッドは現在の画像インスタンスをPNG形式でエンコードします。フォーマットの詳細はパラメータで指定できます。PNGを interlaced(インターレース)でエンコードすると、画像を順次レンダリングできるようになります。デフォルトでは非インターレース(逐次保存)が使用されます。
2番目のオプション indexed は、画像をインデックス(制限された)カラーパレットで保存するかどうかを決定します。このオプションを有効にすると色数が自動的に削減され、ファイルサイズは小さくなりますが、色の品質が低下することがあります。デフォルトではエンコーダーは常にトゥルーカラー(truecolor)形式を出力します。
注意:インデックス色パレットでのPNG出力に対するGDドライバーは、二値透過のみサポートします。 つまり色は完全に透明か完全に不透明のどちらかであり、半透明はGDでは使用できません。
| 名前 | 型 | 説明 |
|---|---|---|
| interlaced(省略可) | bool | 画像をインターレースでエンコードするオプション。デフォルトは無効。 |
| indexed(省略可) | bool | インデックスカラーパレットでPNGをエンコードするオプション。デフォルトはトゥルーカラー(非インデックス)です。 |
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Gd\Driver;
// 指定したドライバーで新しいマネージャーインスタンスを作成します
$manager = new ImageManager(Driver::class);
// JPEG 画像を読み込みます
$image = $manager->read('images/example.jpg');
// truecolor の PNG 画像としてエンコードします
$encoded = $image->toPng(); // Intervention\Image\EncodedImage
// インデックスカラーパレットを使った PNG 形式でエンコードします
$encoded = $image->toPng(indexed: true); // Intervention\Image\EncodedImage
#GIF形式のエンコード
public Image::toGif(bool $interlaced = false): EncodedImage
現在の画像インスタンスをGIF形式でエンコードします。
注意:バージョン3.1でシグネチャが変更され、color_limit パラメータが削除されました
| 名前 | 型 | 説明 |
|---|---|---|
| interlaced(省略可) | bool | 画像をインターレースでエンコードするオプション。デフォルトは無効。 |
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Gd\Driver;
// 指定したドライバーで新しいマネージャーインスタンスを作成します
$manager = new ImageManager(new Driver());
// JPEG 画像を読み込みます
$image = $manager->read('images/example.jpg');
// GIF データをエンコードします
$encoded = $image->toGif(); // Intervention\Image\EncodedImage
#Windows ビットマップ形式のエンコード
public Image::toBitmap(): EncodedImage
現在の画像インスタンスをWindowsビットマップ形式でエンコードします。
注意:バージョン3.1でシグネチャが変更され、color_limit パラメータが削除されました
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Imagick\Driver;
// 指定したドライバーで新しいマネージャーインスタンスを作成します
$manager = new ImageManager(Driver::class);
// JPEG 画像を読み込みます
$image = $manager->read('images/example.jpg');
// BMP データをエンコードします
$encoded = $image->toBmp(); // Intervention\Image\EncodedImage
#AV1 画像ファイルフォーマット(AVIF)のエンコード
public Image::toAvif(int $quality = 75): EncodedImage
現在の画像インスタンスをAVIF形式で、与えられた quality(0は低品質、100は最高品質)の値でエンコードします。
| 名前 | 型 | 説明 |
|---|---|---|
| quality(省略可) | integer | エンコード品質。デフォルトは75。 |
| strip(省略可) | bool | エンコード時に画像メタデータを削除するかどうかを決定します。デフォルトはドライバー設定 の値です。 |
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Imagick\Driver;
// 指定したドライバーで新しいマネージャーインスタンスを作成します
$manager = new ImageManager(new Driver());
// JPEG 画像を読み込みます
$image = $manager->read('images/example.jpg');
// AVIF 画像をエンコードします
$encoded = $image->toAvif(60); // Intervention\Image\EncodedImage
#TIFF形式のエンコード
public Image::toTiff(int $quality = 75): EncodedImage
現在の画像インスタンスをTIFF形式で、与えられた quality(0は低品質、100は最高品質)の値でエンコードします。
| 名前 | 型 | 説明 |
|---|---|---|
| quality(省略可) | integer | エンコード品質。デフォルトは75。 |
| strip(省略可) | bool | エンコード時に画像メタデータを削除するかどうかを決定します。デフォルトはドライバー設定 の値です。 |
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Imagick\Driver;
// 指定したドライバーで新しいマネージャーインスタンスを作成します
$manager = new ImageManager(new Driver());
// JPEG 画像を読み込みます
$image = $manager->read('images/example.jpg');
// TIFF 形式でエンコードします
$encoded = $image->toTiff(60); // Intervention\Image\EncodedImage
#JPEG 2000形式のエンコード
public Image::toJpeg2000(int $quality = 75): EncodedImage
現在の画像インスタンスをJPEG 2000形式で、与えられた quality(0は低品質、100は最高品質)の値でエンコードします。
| 名前 | 型 | 説明 |
|---|---|---|
| quality(省略可) | integer | エンコード品質。デフォルトは75。 |
| strip(省略可) | bool | エンコード時に画像メタデータを削除するかどうかを決定します。デフォルトはドライバー設定 の値です。 |
use Intervention\Image\ImageManager;
// 指定したドライバーで新しいマネージャーインスタンスを作成します
$manager = ImageManager::imagick();
// PNG 画像を読み込みます
$image = $manager->read('images/example.png');
// JPEG 2000 形式でエンコードします
$encoded = $image->toJpeg2000(90); // Intervention\Image\EncodedImage
#HEIC形式のエンコード
public Image::toHeic(int $quality = 75): EncodedImage
現在の画像インスタンスをHEIC形式で、与えられた quality(0は低品質、100は最高品質)の値でエンコードします。
| 名前 | 型 | 説明 |
|---|---|---|
| quality(省略可) | integer | エンコード品質。デフォルトは75。 |
| strip(省略可) | bool | エンコード時に画像メタデータを削除するかどうかを決定します。デフォルトはドライバー設定 の値です。 |
use Intervention\Image\ImageManager;
// 指定したドライバーで新しいマネージャーインスタンスを作成します
$manager = ImageManager::imagick();
// PNG 形式を読み込みます
$image = $manager->read('images/example.jpg');
// HEIC 画像をエンコードします
$encoded = $image->toHeic(60); // Intervention\Image\EncodedImage
#エンコード済み画像データの取り扱い
前述のエンコードメソッドは Intervention\Image\EncodedImage オブジェクトを返します。このインスタンスを使ってエンコード済みデータの処理方法を決定できます。
#エンコード済み画像データを文字列にキャスト
public EncodedImage::__toString(): string
このメソッドは生の画像データを文字列型として取得できます。他のライブラリでさらに処理したり、リモートストレージ(例:S3)に転送する場合に便利です。
#例
use Intervention\Image\ImageManager;
use Just\An\Example\CloudStorage;
// 指定したドライバーで新しいマネージャーインスタンスを作成します
$manager = ImageManager::imagick();
// GIF 画像をリサイズします
$image = $manager
->read('images/example.gif')
->scale(height: 200);
// JPEG 形式にエンコードし、結果を文字列にキャストします
$imagedata = (string) $image->toJpeg();
// 仮のデータサービスに保存します
CloudStorage::put('example.jpg', $imagedata);
#エンコード済み画像データをファイルシステムに保存
public EncodedImage::save(string $filepath, mixed ...$options): void
このメソッドはオブジェクトのデータをローカルファイルシステムの指定パスに書き込みます。該当するフォルダ構成は事前に存在し、書き込み可能である必要があります。
#パラメータ
| 名前 | 型 | 説明 |
|---|---|---|
| filepath | string | ファイルシステム内のファイルへのパス。 |
| options(省略可) | mixed | 出力フォーマットに応じたオプションパラメータ。 |
#例
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Imagick\Driver;
// 指定したドライバーで新しいマネージャーインスタンスを作成します
$manager = new ImageManager(Driver::class);
// GIF 画像を読み込みます
$image = $manager->read('images/example.gif');
// 低品質のプログレッシブ JPEG ファイルを保存します
$encoded = $image->toJpeg()->save('images/test.jpg', progressive: true, quality: 10);
#データURIスキームを作成
public EncodedImage::toDataUri(): string
このメソッドは既にエンコードされた画像データを取り、base64 エンコードされたデータURIスキームでラップします。
#例
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Gd\Driver;
// 指定したドライバーで新しいマネージャーインスタンスを作成します
$manager = new ImageManager(new Driver());
// GIF 画像を読み込みます
$image = $manager->read('images/example.gif');
// GIF のデータ URI にエンコードします
$data_uri = $image->toGif()->toDataUri();
#エンコード済み画像をファイルポインタに変換
public EncodedImage::toFilePointer(): resource
エンコード済み画像データを扱うためのファイルポインタリソースを作成します。
#例
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Imagick\Driver;
// 指定したドライバーで新しいマネージャーインスタンスを作成します
$manager = new ImageManager(Driver::class);
// GIF 画像を読み込みます
$image = $manager->read('images/example.gif');
// ファイルポインタを作成します
$pointer = $image->toJpeg()->toFilePointer();
#エンコード済み画像のメディア(MIME)タイプを取得
public EncodedImage::mediaType(): string
このメソッドはエンコード済み画像のメディア(MIME)タイプを返します。
#例
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Imagick\Driver;
// 指定したドライバーで新しいマネージャーインスタンスを作成します
$manager = new ImageManager(new Driver());
// GIF 画像を読み込みます
$image = $manager->read('images/example.gif');
// "image/jpeg"
$mimetype = $image->toJpeg()->mediaType();
#画像を直接書き込む
#エンコードと保存を同時に行う
public Image::save(null|string $path = null, mixed ...$options): ImageInterface
このメソッドは EncodedImage オブジェクトを経由せずに、画像オブジェクトから直接保存処理を開始でき、エンコードと書き込みを1回の呼び出しで行います。
出力される画像形式は指定したパスのファイル拡張子で決まります。パスが指定されない場合は元の画像の形式が使用されます。画像品質は第二引数で指定します。
エンコードされた画像はローカルファイルシステムの指定パスに保存されます。該当するフォルダ構成は事前に存在し、書き込み可能である必要があります。
他のエンコードメソッドとは異なり、save() は EncodedImage オブジェクトの代わりに Image オブジェクトを返します。
#パラメータ
| 名前 | 型 | 説明 |
|---|---|---|
| path(省略可) | null or string | ターゲット形式を抽出するファイルパス。デフォルトは元のパスです。 |
| options(省略可) | mixed | 出力フォーマットに応じたオプションパラメータ。 |
#例
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Imagick\Driver;
// 指定したドライバーで新しいマネージャーインスタンスを作成します
$manager = new ImageManager(Driver::class);
// JPEG 画像を読み込みます
$image = $manager->read('images/example.jpg');
// "images/example.jpg" にあるファイルを低品質で上書きします
$image->save(quality: 10);
// JPEG を PNG にエンコードして新しいファイルに保存します
$image->save('images/example.png');
// 低品質のプログレッシブ JPEG をエンコードして保存します
$image->save('images/example.jpg', quality: 10, progressive: true);