If you are using windows imagemagick, at leat in my case, you have to include the full path of the file, including the 'c:' at the beginning. If you don't know for sure the way that the filename is going to come, you can use realpath() function to normalize it:
<?php
$incoming_file = '/Users/John/Desktop/file_loco.jpg';
$img = new Imagick(realpath($incoming_file));
// realpath() will convert '/Users/John/Desktop/file_loco.jpg' to 'C:\Users\John\Desktop\file_loco.jpg'
// and ImageMagick will have no trouble when loading
?>
Imagick::__construct
(PECL imagick 2.0.0)
Imagick::__construct — El constructor Imagick
Descripción
Imagick::__construct
( mixed
$files
)Crea una instancia de Imagick para una imagen o conjunto de imágenes especificos.
Parámetros
-
files -
La ruta de una imagen a cargar o un array de rutas. Las rutas pueden incluir comodines para nombres de ficheros, o pueden ser URLs.
Valores devueltos
Devuelve un nuevo objeto Imagick si se tuvo éxtio.
Errores/Excepciones
Lanza ImagickException en caso de error.
martin at lks dot com ¶
1 year ago
andyearnshaw at do-not-spam-mygmail dot com ¶
3 months ago
If you try and load an ICO file whose extension isn't .ico, you'll get an error going along the lines of no delegate existing for the supplied image's format. The can occur, for example, if you're using a temporary file.
<?php
$tmp = tempnam('cache/images', 'ico_');
if (copy('http://remote.url/favicon.ico', $tmp)) {
$ico = new Imagick($tmp); // <-- ERROR!
}
?>
Your first thought might be to rename your temporary file's extension to .ico, but I decided to try something that works on the command line―prefix the file name with 'ico:'
<?php
$tmp = tempnam('cache/images', 'ico_');
if (copy('http://remote.url/favicon.ico', $tmp)) {
$ico = new Imagick("ico:$tmp"); // <-- Works great!
}
?>
