Imagick::newImage

(PECL imagick 2, PECL imagick 3)

Imagick::newImage创建一张图片

说明

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

创建一个 Imagick 图片对象,同时可以附带设置一个 ImagickPixel 值作为其背景色。

参数

cols

新建图片对象列的值(宽多少像素)

rows

新建图片对象行的值(高多少像素)

background

新建图片独享的背景色

format

图片格式。这个参数是在 Imagick 2.0.1 版本添加的。

返回值

成功时返回 true

错误/异常

错误时抛出 ImagickException。

更新日志

版本 说明
PECL imagick 2.1.0 现在可以似乎用了一个字符串作为颜色传入第三个参数。在此之前的版本只允许以一个 ImagickPixel 对象的形式传入。

示例

示例 #1 Using Imagick::newImage():

Create a new image and display it.

<?php

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

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

?>

添加备注

用户贡献的备注 3 notes

up
42
christian dot reinecke at web dot de
15 years ago
The color value (3rd argument) for transparency is "none".
up
5
jfalner1 at gmail dot com
10 years ago
As it isn't obvious, the cols and rows arguments correspond to the width and height of the new image, expressed in pixels. Example #1 would generate a 100 pixel by 100 pixel image.
up
1
Eduard Sukharev
8 years ago
It's not obvious and may be related only to some specific versions of ImageMagick (tested only for 6.7.7 and 6.8.9), but $cols and $rows must be a positive non-zero value.

<?php

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

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

In this case imagemagick will crash without throwing any exception and you'll get something along the lines (in your apache error log or console output):

unable to acquire cache view `No such file or directory' @ fatal/cache-view.c/AcquireAuthenticCacheView/121.

This might be the case when you calculate $cols and $rows (say, based on user input and predefined target image DPI):

<?php

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

In this case if user requested image with 0.006 width (in inches), the code would work for $defaultPpi = 300 ppi, but would crash for
$defaultPpi = 72 ppi
To Top