PHP Conference Japan 2024

Imagick::__construct

(PECL imagick 2, PECL imagick 3)

Imagick::__constructImagick 建構子

描述

public Imagick::__construct(mixed $files = ?)

為指定的影像或一組影像建立 Imagick 實例。

參數

files

要載入的影像路徑或路徑陣列。路徑可以包含檔案名稱的萬用字元,也可以是 URL。

錯誤/例外

發生錯誤時拋出 ImagickException。

新增註解

使用者貢獻的註解 4 則註解

martin at lks dot com
12 年前
如果您使用 Windows ImageMagick,至少在我的情況下,您必須包含檔案的完整路徑,包括開頭的 'c:'。如果您不確定檔案名稱的來源方式,可以使用 realpath() 函式將其正規化。

<?php
$incoming_file
= '/Users/John/Desktop/file_loco.jpg';
$img = new Imagick(realpath($incoming_file));
// realpath() 會將 '/Users/John/Desktop/file_loco.jpg' 轉換為 'C:\Users\John\Desktop\file_loco.jpg'
// 並且 ImageMagick 在載入時不會有問題
?>
andyearnshaw at do-not-spam-mygmail dot com
11 年前
如果您嘗試載入副檔名不是 .ico 的 ICO 檔案,您會收到類似於沒有委派處理提供的影像格式的錯誤訊息。例如,如果您使用暫存檔,就可能發生這種情況。

<?php
$tmp
= tempnam('cache/images', 'ico_');

if (
copy('http://remote.url/favicon.ico', $tmp)) {
$ico = new Imagick($tmp); // <-- 錯誤!
}
?>

您第一個想到的可能是將暫存檔的副檔名重新命名為 .ico,但我決定嘗試一些在命令列上有效的東西 — 在檔名前面加上 'ico:'。

<?php
$tmp
= tempnam('cache/images', 'ico_');

if (
copy('http://remote.url/favicon.ico', $tmp)) {
$ico = new Imagick("ico:$tmp"); // <-- 效果很好!
}
?>
divinity76 at gmail dot com
5 年前
如果您需要從包含影像二進位資料的字串建立影像,請使用 readImageBlob,例如

<?php
$imagick
= new Imagick();
$imagick->readImageBlob($str);
?>

同樣地,如果您需要從檔案控制代碼(而沒有檔案路徑)建立影像,請使用 readImageFile()
Jerome
11 年前
您可以使用 PDF 頁面作為影像。若要執行此操作,請安裝 ghostscript 程式庫。
IMagick 使用 ghostscript 來讀取 PDF 頁面。

<?php
$myurl
= '/pdf/mypdf.pdf';
$image = new Imagick(realpath($myurl).'[0]'); //[0] 表示想要的頁碼
$image->setResolution( 300, 300 );
$image->setImageFormat( "png" );
$image->writeImage(realpath('./mypdf.png'));
?>
To Top