PHP 8.4.6 Released!

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 色を表す文字列を 3 番目のパラメータとして指定できるようになりました。 これまでのバージョンでは 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;

?>

add a note

User Contributed Notes 3 notes

up
44
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