#カラー情報
#特定のピクセルの色を読み取る
public Image::pickColor(int $x, int $y, int $frame_key = 0): ColorInterface
X座標とY座標で指定したピクセルの色を読み取ります。色が取得されたフレームのキーも取得できます。これはアニメーション画像にのみ関連します。
#パラメータ
| 名前 | Type | 説明 |
|---|---|---|
| x | int | ピクセル位置のX座標 |
| y | int | ピクセル位置のY座標 |
| frame_key | int | 色情報を読み取るフレームのオプションキー |
#例
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Gd\Driver;
// 指定したドライバで新しいマネージャーインスタンスを作成する
$manager = new ImageManager(Driver::class);
// 画像を読み込む
$image = $manager->read('images/animation.gif');
// フレーム10の位置23/9の色情報を取得する
$color = $image->pickColor(23, 9, 10);
// 'f3fbe6'
$hex = $color->toHex();
// 'rgb(243, 251, 230)'
$string = $color->toString();
// (int) 243
$red = $color->red()->toInt();
// (int) 251
$green = $color->green()->toInt();
// (int) 230
$blue = $color->blue()->toInt();
// (int) 255
$alpha = $color->alpha()->toInt();
#アニメーション画像で特定のピクセルのすべての色を読み取る
public Image::pickColors(int $x, int $y): CollectionInterface
XとYの座標で指定したピクセルのすべての色を読み取り、コレクションで返します。アニメーション画像の場合、このコレクションには指定位置の各フレームの色がすべて含まれます。非アニメーション画像の場合は画像が1フレームしか含まないため、コレクションには1つの色だけが含まれます。
#パラメータ
| 名前 | Type | 説明 |
|---|---|---|
| x | int | ピクセル位置のX座標 |
| y | int | ピクセル位置のY座標 |
#例
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Imagick\Driver;
// 指定したドライバで新しいマネージャーインスタンスを作成する
$manager = new ImageManager(new Driver());
// 画像を読み込む
$image = $manager->read('images/animation.gif');
// 指定位置の色情報を取得する
$colors = $image->pickColors(10, 10);
// 最初の色
$color = $colors->first();
// 特定フレームの色
$color = $colors->get(6);
#色の変換
画像のピクセル色をオブジェクトとして読み取ると、さらに多くの操作が可能になります。
#色を文字列値に変換する
public ColorInterface::toString(): ColorInterface
各色オブジェクトは文字列として出力できます。toString() メソッドを使うか、オブジェクトを直接キャストできます。出力は使用している色空間によって変わります。
use Intervention\Image\ImageManager;
use Intervention\Image\Colors\Hsl\Colorspace as HslColorspace;
// 指定したドライバで新しいマネージャーインスタンスを作成する
$manager = ImageManager::gd();
// 画像を読み込む
$image = $manager->read('images/example.png');
// ピクセルの色を取得する
$color = $image->pickColor(20, 10);
// 色を文字列形式に変換する
$result = $color->toString(); // "rgba(255, 255, 255, 1.0)"
// 同じ結果
$result = (string) $color;
#色空間間で色を変換する
public ColorInterface::convertTo(string|ColorspaceInterface $colorspace): ColorInterface
各色オブジェクトは他の色空間に変換するメソッドを持ちます。ターゲットの色空間は文字列またはオブジェクトで指定できます。現在のドライバーがターゲット色空間をサポートしていない場合でも動作します。
利用可能な色空間は次のとおりです。
Intervention\Image\Colors\Rgb\ColorspaceIntervention\Image\Colors\Cmyk\ColorspaceIntervention\Image\Colors\Hsv\ColorspaceIntervention\Image\Colors\Hsl\Colorspace
use Intervention\Image\ImageManager;
use Intervention\Image\Colors\Hsl\Colorspace as HslColorspace;
// 指定したドライバで新しいマネージャーインスタンスを作成する
$manager = ImageManager::imagick();
// 画像を読み込む
$image = $manager->read('images/example.png');
// ピクセルの色を取得する
$color = $image->pickColor(20, 10);
$result = $color->toString(); // "rgba(0, 255, 255, 1.0)"
// 色をHSL形式に変換する
$hslColor = $color->convertTo(HslColorspace::class);
$result = $hslColor->toString(); // "hsl(180, 100, 50)"
#色空間
サポートされる色空間は主に使用するドライバーに依存します。Imagick ドライバーは RGB と CMYK の色空間をサポートしますが、GD ドライバーは RGB のみに制限されます。
GD ドライバーを使用して Intervention Image で CMYK 画像を読み込むと、画像は自動的に RGB 色空間に変換されます。
#画像の色空間を読み取る
public Image::colorspace(): ColorspaceInterface
この関数は現在の画像インスタンスの色空間を読み取ります。
#例
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Gd\Driver;
// 指定したドライバで新しいマネージャーインスタンスを作成する
$manager = new ImageManager(Driver::class);
// 画像を読み込む
$image = $manager->read('images/example.jpg');
// カラースペースオブジェクトを取得する
$colorspace = $image->colorspace();
#画像の色空間を変更する
public Image::setColorspace(string|ColorspaceInterface $colorspace): ImageInterface
この関数は現在の画像を指定した色空間に変換します。ターゲットの色空間はオブジェクト、クラス名、または色空間の略称で指定できます。
#パラメータ
| 名前 | Type | 説明 |
|---|---|---|
| colorspace | string or ColorspaceInterface | ターゲット色空間 |
#例
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Imagick\Driver;
use Intervention\Image\Colors\Rgb\Colorspace as RgbColorspace;
use Intervention\Image\Colors\Cmyk\Colorspace as CmykColorspace;
// 指定したドライバで新しいマネージャーインスタンスを作成する
$manager = new ImageManager(new Driver());
// 画像を読み込む
$image = $manager->read('images/example.jpg');
// 略称で画像をCMYKに変換する
$colorspace = $image->setColorspace('cmyk');
// クラス名で再びRGBに変換する
$colorspace = $image->setColorspace(RgbColorspace::class);
// オブジェクトで再びCMYKに変換する
$colorspace = $image->setColorspace(new CmykColorspace());
#カラープロファイル
現時点では Intervention Image は ìmagick ドライバーでのみカラープロファイルを扱えます。
#カラープロファイルを読み取る
public Image::profile(): ProfileInterface
この関数は現在の画像インスタンスから ICC カラープロファイルを読み取ります。プロファイルが見つからない場合は ColorException がスローされます。
#例
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Imagick\Driver;
// 指定したドライバで新しいマネージャーインスタンスを作成する
$manager = new ImageManager(new Driver());
// 画像を読み込む
$image = $manager->read('images/example.jpg');
// ICCプロファイルを読み取る
$profile = $image->profile();
// プロファイルをファイルシステムに保存する
$profile->save('my_profile.icc')
#カラープロファイルを設定する
public function setProfile(ProfileInterface $profile): ImageInterface
この関数は与えられた ICC カラープロファイルを現在の画像インスタンスに適用します。関数は ProfileInterface::class のインスタンスを引数として受け取ります。
#パラメータ
| 名前 | Type | 説明 |
|---|---|---|
| profile | ProfileInterface | ターゲット ICC プロファイル |
#例
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Imagick\Driver;
use Intervention\Image\Colors\Profile;
// create new manager instance with desired driver
$manager = new ImageManager(Driver::class);
// reading an image
$image = $manager->read('images/example.jpg');
// 新しいカラープロファイルを設定する
$image->setProfile(Profile::fromPath('profiles/profile.icc'));
#カラープロファイルを削除する
public function removeProfile(): ImageInterface
現在の画像からすべてのカラープロファイルを削除します。
#例
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Imagick\Driver;
// 指定したドライバで新しいマネージャーインスタンスを作成する
$manager = new ImageManager(Driver::class);
// 画像を読み込み、プロファイルを削除する
$image = $manager->read('images/example.jpg')->removeProfile();
#透過
Intervention Image はアルファチャネルを持つ画像形式をサポートします。出力形式が透過をサポートしている限り、透過領域は保持されます。
出力形式が透過をサポートしていない場合、アルファチャネルは保持できません。この場合、透過領域は不透明な色で合成されます。この色は初期の画像マネージャの設定で事前に指定するか、次のメソッドのオプション引数として渡せます。実行時にブレンド色を設定または取得することも可能です。
#透過領域を色で合成する
public function blendTransparency(mixed $color = null): ImageInterface
非透過の画像形式に切り替えると、透過は自動的に設定されたブレンド色に置き換えられますが、手動で行うこともできます。この関数は実際に透過を含めることができる画像形式にも適用できます。
color パラメータは、一般的な カラー形式 で色を指定するためにオプションで使用できます。デフォルトでは現在の、または以前に設定されたブレンド色が使用されます。ブレンド色に含まれる透過値は無視される点に注意してください。
#パラメータ
| 名前 | Type | 説明 |
|---|---|---|
| color | mixed | 透過領域を置き換える色(オプション)。 |
#例
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Gd\Driver;
// 指定したドライバとデフォルトのブレンディングカラーで新しいマネージャーインスタンスを作成する
$manager = new ImageManager(Driver::class);
// 透明な画像を読み込む
$image = $manager->read('images/example.png');
// 透明部分をオレンジで合成する
$image->blendTransparency('f50');
#ブレンド色を読み取る
public function blendingColor(): ColorInterface
ColorInterface::class のインスタンスとして現在設定されているブレンド色を返します。これは ImageManager を通じて元々設定された色、または最後に設定されたブレンド色のいずれかに対応します。
#ブレンド色を設定する
public function setBlendingColor(mixed $color): ImageInterface
現在の画像インスタンスの設定で新しいブレンド色を設定します。この色はブレンド色を使用する以降のすべての操作のデフォルトとして使われ、ImageManager 設定で定義された元の値を上書きします。
#パラメータ
| 名前 | Type | 説明 |
|---|---|---|
| color | mixed | サポートされている カラー形式 による新しいブレンド色。 |
#例
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Gd\Driver;
// 指定したドライバーとブレンドカラー(赤)で新しいマネージャーインスタンスを作成する
$manager = new ImageManager(Driver::class, blendingColor: 'ff0000');
// 画像を読み込む
$image = $manager->read('images/example.png');
// 設定されたブレンドカラーを取得する
$blendingColor = $image->blendingColor(); // 'ff0000'
// ブレンドカラーをグレーに設定する
$image->setBlendingColor('cccccc');
// 最後に設定したブレンドカラーを取得する
$blendingColor = $image->blendingColor(); // 'cccccc'