ImagickEngine
extends ImageEngine
in package
Table of Contents
Methods
- __construct() : mixed
- Image Helper constructor.
- computeEditMetrics() : array<string|int, mixed>
- 画像編集をするための数値を計算
- copyImage() : void
- 画像を複製
- copyImageAsWebp() : void
- WebP画像として画像を複製
- detectImageExtenstion() : string
- MIMEタイプから画像拡張子を検出する
- editImage() : void
- 画像を編集(リサイズ・回転)して書き出す
- getImageQuality() : int
- 画質を取得
- getImageSize() : array{0: int, 1: int, 2: int, 3: string, bits: int, channels: int, mime: string}|false
- 画像パスから画像サイズを取得
- getMimeType() : string|null
- 画像パスからMIMETypeを取得
- getOrientedSize() : array{0: int, 1: int}
- EXIF Orientation を適用した状態の画像サイズを取得する
- getSize() : array{0: int, 1: int}
- 画像サイズを取得
- isSupportedImageFormat() : bool
- 指定のMIMEタイプの画像形式がこのエンジンで実際に処理可能か判定する
- isWebpSupported() : bool
- GDでWebP画像がサポートされているか判定
- optimize() : void
- ロスレス圧縮を実行
- resizeImage() : void
- 画像をリサイズ
- setImageQuality() : void
- 画質をセット
- setOptimizer() : void
- 画像オプティマイザーを設定
- shouldReadFromLocalStorage() : bool
- 指定のパスを LocalStorage(ローカルファイルシステム)から直接読むべきか判定する
- supportsExifOrientation() : bool
- Imagick の autoOrient はネイティブに EXIF を扱うため、exif 拡張の有無に関わらず常に true
- loadImagickFromPath() : Imagick
- パスからImagickを生成
- mimeTypeToExtension() : string|T
- 画像パスから画像拡張子を取得
- needsOrientationCorrection() : bool
- 画像が EXIF Orientation による向き補正を要するか、ヘッダのみ読んで(デコードせず)判定する。
- outputImage() : void
- 書き出し
- readImageOrientation() : int
- 画像パスから EXIF Orientation(0〜8)を、ヘッダのみ読んで(デコードせず)取得する。
- doResize() : void
- リサイズ・回転して書き出す実処理
- normalizeImageForWebp() : void
- Imagick オブジェクトを WebP 出力用に正規化する
Methods
__construct()
Image Helper constructor.
public
__construct() : mixed
computeEditMetrics()
画像編集をするための数値を計算
public
computeEditMetrics(int $srcWidth, int $srcHeight[, int|null $width = null ][, int|null $height = null ][, int|null $size = null ]) : array<string|int, mixed>
Parameters
- $srcWidth : int
- $srcHeight : int
- $width : int|null = null
- $height : int|null = null
- $size : int|null = null
Return values
array<string|int, mixed> —{ width: int, height: int, x: int, y: int, columns: int, rows: int }
copyImage()
画像を複製
public
copyImage(string $srcPath, string $destPath[, string|null $format = null ]) : void
Parameters
- $srcPath : string
- $destPath : string
- $format : string|null = null
copyImageAsWebp()
WebP画像として画像を複製
public
copyImageAsWebp(string $srcPath, string $destPath) : void
Parameters
- $srcPath : string
- $destPath : string
detectImageExtenstion()
MIMEタイプから画像拡張子を検出する
public
detectImageExtenstion(string $mimeType) : string
Parameters
- $mimeType : string
Return values
stringeditImage()
画像を編集(リサイズ・回転)して書き出す
public
editImage(string $srcPath, string $destPath[, int|null $width = null ][, int|null $height = null ][, int|null $size = null ][, int|null $angle = null ]) : void
Parameters
- $srcPath : string
- $destPath : string
- $width : int|null = null
- $height : int|null = null
- $size : int|null = null
- $angle : int|null = null
getImageQuality()
画質を取得
public
getImageQuality() : int
Return values
intgetImageSize()
画像パスから画像サイズを取得
public
getImageSize(string $path) : array{0: int, 1: int, 2: int, 3: string, bits: int, channels: int, mime: string}|false
Parameters
- $path : string
Return values
array{0: int, 1: int, 2: int, 3: string, bits: int, channels: int, mime: string}|falsegetMimeType()
画像パスからMIMETypeを取得
public
getMimeType(string $path) : string|null
Parameters
- $path : string
Return values
string|nullgetOrientedSize()
EXIF Orientation を適用した状態の画像サイズを取得する
public
getOrientedSize(string $path) : array{0: int, 1: int}
Parameters
- $path : string
Return values
array{0: int, 1: int}getSize()
画像サイズを取得
public
getSize(string $path) : array{0: int, 1: int}
Parameters
- $path : string
Return values
array{0: int, 1: int}isSupportedImageFormat()
指定のMIMEタイプの画像形式がこのエンジンで実際に処理可能か判定する
public
isSupportedImageFormat(string $mimeType) : bool
gif/png/jpeg/bmp/xbm など mimeTypeMap に登録済みの形式は true を返す。 WebP のように環境(GD/Imagick・設定)によって対応有無が変わる形式のみ 個別に判定する。mimeTypeMap に無い形式(AVIF・HEIC等、現時点で未対応の 画像形式)は false を返す。将来対応する際は、対象形式を mimeTypeMap に 追加するか、この match 式に判定を追加すればよい(呼び出し側の変更は不要)。
「そもそも画像として扱うファイルかどうか」(SVGや非画像ファイルの除外)は このメソッドの責務ではなく、呼び出し側(Media::isImageFile() 等)が判定する。
Parameters
- $mimeType : string
Return values
boolisWebpSupported()
GDでWebP画像がサポートされているか判定
public
isWebpSupported() : bool
Return values
booloptimize()
ロスレス圧縮を実行
public
optimize(string $path) : void
Parameters
- $path : string
resizeImage()
画像をリサイズ
public
resizeImage(string $srcPath, string $destPath, int $srcWidth, int $srcHeight, int $srcX, int $srcY, int $destWidth, int $destHeight, int $destX, int $destY, int $canvasWidth, int $canvasHeight, array{0: int, 1: int, 2: int} $color[, int|null $angle = null ]) : void
ImageResize など、getOrientedSize() で取得した向き補正後の寸法を基準に src/dest/canvas を計算した外部コードから直接呼ばれる公開APIである。 呼び出し元の寸法計算と整合させるため、内部で EXIF Orientation を適用する。
Parameters
- $srcPath : string
- $destPath : string
- $srcWidth : int
- $srcHeight : int
- $srcX : int
- $srcY : int
- $destWidth : int
- $destHeight : int
- $destX : int
- $destY : int
- $canvasWidth : int
- $canvasHeight : int
- $color : array{0: int, 1: int, 2: int}
- $angle : int|null = null
setImageQuality()
画質をセット
public
setImageQuality(int $quality) : void
Parameters
- $quality : int
setOptimizer()
画像オプティマイザーを設定
public
setOptimizer(ImagerOptimizer $optimizer) : void
Parameters
- $optimizer : ImagerOptimizer
shouldReadFromLocalStorage()
指定のパスを LocalStorage(ローカルファイルシステム)から直接読むべきか判定する
public
shouldReadFromLocalStorage(string $path) : bool
PHPのアップロード一時ファイルや php:// ストリームなど、まだ PublicStorage (ローカル/クラウドの永続化ストレージ抽象化レイヤー)の管理下にないパスは true を返す。false の場合は PublicStorage 経由でアクセスする。
Parameters
- $path : string
Return values
boolsupportsExifOrientation()
Imagick の autoOrient はネイティブに EXIF を扱うため、exif 拡張の有無に関わらず常に true
public
supportsExifOrientation() : bool
Return values
boolloadImagickFromPath()
パスからImagickを生成
protected
loadImagickFromPath(string $path) : Imagick
Parameters
- $path : string
Return values
ImagickmimeTypeToExtension()
画像パスから画像拡張子を取得
protected
mimeTypeToExtension(string $mimeType[, T $fallback = 'jpg' ]) : string|T
Parameters
- $mimeType : string
- $fallback : T = 'jpg'
Tags
Return values
string|TneedsOrientationCorrection()
画像が EXIF Orientation による向き補正を要するか、ヘッダのみ読んで(デコードせず)判定する。
protected
needsOrientationCorrection(string $path) : bool
Parameters
- $path : string
Return values
booloutputImage()
書き出し
protected
outputImage(Imagick $imagick, string $destPath) : void
Parameters
- $imagick : Imagick
- $destPath : string
readImageOrientation()
画像パスから EXIF Orientation(0〜8)を、ヘッダのみ読んで(デコードせず)取得する。
protected
readImageOrientation(string $path) : int
取得に失敗した場合は 0(UNDEFINED)を返す。
Parameters
- $path : string
Return values
intdoResize()
リサイズ・回転して書き出す実処理
private
doResize(Imagick $imagick, string $srcPath, string $destPath, int $srcWidth, int $srcHeight, int $srcX, int $srcY, int $destWidth, int $destHeight, int $destX, int $destY, int $canvasWidth, int $canvasHeight, array{0: int, 1: int, 2: int} $color[, int|null $angle = null ]) : void
$imagick は呼び出し側で向きが確定済みであることを前提とする (本メソッドでは EXIF Orientation の適用を行わない。stripImage() で EXIF を消しても、呼び出し側で autoOrient 済みなら正しい向きが維持される)。
Parameters
- $imagick : Imagick
- $srcPath : string
- $destPath : string
- $srcWidth : int
- $srcHeight : int
- $srcX : int
- $srcY : int
- $destWidth : int
- $destHeight : int
- $destX : int
- $destY : int
- $canvasWidth : int
- $canvasHeight : int
- $color : array{0: int, 1: int, 2: int}
- $angle : int|null = null
normalizeImageForWebp()
Imagick オブジェクトを WebP 出力用に正規化する
private
normalizeImageForWebp(Imagick $imagick) : void
グレースケール(Colorspace: Gray)や深いビット深度の画像をそのまま WebP に エンコードすると、一部の libwebp 環境で getImageBlob() が空を返し 「Failed to get the image contents」例外になる。色空間を sRGB に、画像タイプを TrueColor(アルファがあれば TrueColorMatte)に、色深度を 8bit に揃えてから フォーマットと画質を設定することで、どの画像でも安定して WebP 出力できるようにする。
Parameters
- $imagick : Imagick