GdEngine
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
- GD は exif_read_data(ext-exif)が無いと EXIF Orientation を解釈できない
- applyExifOrientation() : GdImage
- EXIF Orientation(1〜8)に従って GD 画像のピクセルを回転/反転する。
- loadGdImageFromPath() : GdImage
- 画像パスからGDImage or resourceを生成
- mimeTypeToExtension() : string|T
- 画像パスから画像拡張子を取得
- outputImage() : void
- 画像ファイルを書き出し
- readExifOrientation() : int
- 画像パスから EXIF Orientation(1〜8)を取得する。
- doResize() : void
- リサイズ・回転して書き出す実処理
- rotateGdImage() : GdImage
- imagerotate で回転し、成功時は元リソースを破棄して新リソースを返す。
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()
GD は exif_read_data(ext-exif)が無いと EXIF Orientation を解釈できない
public
supportsExifOrientation() : bool
Return values
boolapplyExifOrientation()
EXIF Orientation(1〜8)に従って GD 画像のピクセルを回転/反転する。
protected
applyExifOrientation(GdImage $image, int $orientation) : GdImage
imagerotate は反時計回りが正方向のため、Orientation 6(時計回り90度)は -90、 Orientation 8(反時計回り90度)は +90 に対応する。1 や未知の値は無変換。
Parameters
- $image : GdImage
- $orientation : int
Return values
GdImage —変換後の画像(回転を伴う場合は新しいリソース)
loadGdImageFromPath()
画像パスからGDImage or resourceを生成
protected
loadGdImageFromPath(string $path) : GdImage
Parameters
- $path : string
Tags
Return values
GdImagemimeTypeToExtension()
画像パスから画像拡張子を取得
protected
mimeTypeToExtension(string $mimeType[, T $fallback = 'jpg' ]) : string|T
Parameters
- $mimeType : string
- $fallback : T = 'jpg'
Tags
Return values
string|ToutputImage()
画像ファイルを書き出し
protected
outputImage(GdImage|false $resource, string $imageType, string $destPath) : void
Parameters
- $resource : GdImage|false
- $imageType : string
- $destPath : string
Tags
readExifOrientation()
画像パスから EXIF Orientation(1〜8)を取得する。
protected
readExifOrientation(string $path) : int
exif 拡張が無い、JPEG / TIFF でない、または取得に失敗した場合は 1(無変換)を返す。
Parameters
- $path : string
Return values
intdoResize()
リサイズ・回転して書き出す実処理
private
doResize(GdImage $resource, 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
$resource は呼び出し側で向きが確定済みであることを前提とする (本メソッドでは EXIF Orientation の適用を行わない)。
Parameters
- $resource : GdImage
- $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
rotateGdImage()
imagerotate で回転し、成功時は元リソースを破棄して新リソースを返す。
private
rotateGdImage(GdImage $image, int $angle) : GdImage
Parameters
- $image : GdImage
- $angle : int
-
反時計回りの角度