PHP Conference Japan 2024

Imagick::newImage

(PECL imagick 2, PECL imagick 3)

Imagick::newImage建立新影像

描述

public Imagick::newImage(
    int $cols,
    int $rows,
    mixed $background,
    string $format = ?
): bool

建立新影像並將 ImagickPixel 值作為背景顏色

參數

cols

新影像中的欄數

rows

新影像中的列數

background

用於此影像的背景顏色

format

影像格式。此參數在 Imagick 版本 2.0.1 中新增。

傳回值

成功時傳回 true

錯誤/例外

發生錯誤時擲回 ImagickException。

變更記錄

版本 描述
PECL imagick 2.1.0 現在允許使用代表顏色的字串作為第三個參數。先前版本僅允許 ImagickPixel 物件。

範例

範例 #1 使用 Imagick::newImage()

建立新影像並顯示它。

<?php

$image
= new Imagick();
$image->newImage(100, 100, new ImagickPixel('red'));
$image->setImageFormat('png');

header('Content-type: image/png');
echo
$image;

?>

新增註解

使用者貢獻的註解 3 則註解

44
christian dot reinecke at web dot de
15 年前
透明度的顏色值 (第三個參數) 為 "none"。
5
jfalner1 at gmail dot com
9 年前
由於並不顯而易見,cols 和 rows 參數對應於新影像的寬度和高度,以像素表示。範例 #1 會產生一個 100 像素乘 100 像素的影像。
1
Eduard Sukharev
8 年前
這並不顯而易見,而且可能僅與 ImageMagick 的某些特定版本有關 (僅針對 6.7.7 和 6.8.9 進行測試),但 $cols 和 $rows 必須為正的非零值。

<?php

$image
= new Imagick();
$image->newImage(0, 100, new ImagickPixel('red'));
$image->setImageFormat('png');

file_put_contents('image.png', $image);
?>

在這種情況下,imagemagick 會崩潰而不會擲回任何例外,而且您會得到類似 (在您的 apache 錯誤日誌或主控台輸出中) 的訊息

無法取得快取視圖 `No such file or directory' @ fatal/cache-view.c/AcquireAuthenticCacheView/121。

當您計算 $cols 和 $rows 時可能會發生這種情況 (例如,根據使用者輸入和預定義的目標影像 DPI)

<?php

$image
= new Imagick();
$img->newImage($userInput->getWidth() * $defaultPpi, $userInput->getHeight() * $defaultPpi, new ImagickPixel('white'));
?>

在這種情況下,如果使用者請求的影像寬度為 0.006 英吋,則程式碼將適用於 $defaultPpi = 300 ppi,但對於
$defaultPpi = 72 ppi 會崩潰
To Top