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 条注释

christian dot reinecke at web dot de
15 年前
透明度的颜色值(第三个参数)为“none”。
jfalner1 at gmail dot com
9 年前
虽然不明显,但 cols 和 rows 参数分别对应于新图像的宽度和高度,以像素为单位表示。示例 #1 将生成一个 100 像素乘以 100 像素的图像。
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