Imagick::newImage

(PECL imagick 2, PECL imagick 3)

Imagick::newImage创建一张图片

说明

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

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

参数

cols

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

rows

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

background

新建图片独享的背景色

format

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

返回值

成功时返回 true

错误/异常

错误时抛出 ImagickException。

更新日志

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

范例

Example #1 Using Imagick::newImage():

Create a new image and display it.

<?php

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

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

?>

User Contributed Notes

Eduard Sukharev 18-Aug-2016 04:39
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
jfalner1 at gmail dot com 07-Apr-2015 06:17
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.
christian dot reinecke at web dot de 23-Jun-2009 04:35
The color value (3rd argument) for transparency is "none".