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
7 年前
这并不明显,可能只与 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