a-blog cms PHP API Reference

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
string

editImage()

画像を編集(リサイズ・回転)して書き出す

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
int

getImageSize()

画像パスから画像サイズを取得

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}|false

getMimeType()

画像パスからMIMETypeを取得

public getMimeType(string $path) : string|null
Parameters
$path : string
Return values
string|null

getOrientedSize()

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
bool

isWebpSupported()

GDでWebP画像がサポートされているか判定

public isWebpSupported() : bool
Return values
bool

optimize()

ロスレス圧縮を実行

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

shouldReadFromLocalStorage()

指定のパスを LocalStorage(ローカルファイルシステム)から直接読むべきか判定する

public shouldReadFromLocalStorage(string $path) : bool

PHPのアップロード一時ファイルや php:// ストリームなど、まだ PublicStorage (ローカル/クラウドの永続化ストレージ抽象化レイヤー)の管理下にないパスは true を返す。false の場合は PublicStorage 経由でアクセスする。

Parameters
$path : string
Return values
bool

supportsExifOrientation()

Imagick の autoOrient はネイティブに EXIF を扱うため、exif 拡張の有無に関わらず常に true

public supportsExifOrientation() : bool
Return values
bool

loadImagickFromPath()

パスからImagickを生成

protected loadImagickFromPath(string $path) : Imagick
Parameters
$path : string
Return values
Imagick

mimeTypeToExtension()

画像パスから画像拡張子を取得

protected mimeTypeToExtension(string $mimeType[, T $fallback = 'jpg' ]) : string|T
Parameters
$mimeType : string
$fallback : T = 'jpg'
Tags
template
Return values
string|T

needsOrientationCorrection()

画像が EXIF Orientation による向き補正を要するか、ヘッダのみ読んで(デコードせず)判定する。

protected needsOrientationCorrection(string $path) : bool
Parameters
$path : string
Return values
bool

outputImage()

書き出し

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
int

doResize()

リサイズ・回転して書き出す実処理

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

        
On this page

Search results