Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从ImageMagick for PHP中的二进制字符串解码图像对象_Php_Imagemagick - Fatal编程技术网

从ImageMagick for PHP中的二进制字符串解码图像对象

从ImageMagick for PHP中的二进制字符串解码图像对象,php,imagemagick,Php,Imagemagick,我有一个脚本,可以下载Favicon并将其转换为PNG 为了处理转换,我使用ImageMagick。我目前的方法包括下载数据,将其写入文件,转换文件,然后删除最初下载的文件。我的意思是: $source = 'http://google.com/favicon.ico'; $image = file_get_contents($source); // I'd like to skip these lines $favicon = fopen('favicon.ico', 'w'); fwrit

我有一个脚本,可以下载Favicon并将其转换为PNG

为了处理转换,我使用ImageMagick。我目前的方法包括下载数据,将其写入文件,转换文件,然后删除最初下载的文件。我的意思是:

$source = 'http://google.com/favicon.ico';
$image = file_get_contents($source);

// I'd like to skip these lines
$favicon = fopen('favicon.ico', 'w');
fwrite($favicon, $image);
fclose($favicon);

$im = new Imagick();
$im->readimage('favicon.ico');
$im = $im->flattenImages();
$im->setImageFormat('png');
$im->writeImage('favicon.png');
unlink('favicon.ico');
这是可行的,但理想情况下,我可以不将
$image
变量写入文件
favicon.ico
而直接转换
$image
变量中的数据,然后再转换
$im->writeImage('favicon.png')

我签出了方法
getImageBlob
,但当我尝试时,出现了以下错误:

PHP Fatal error:  Uncaught exception 'ImagickException' with message 'no decode delegate for this image format `' @ error/blob.c/BlobToImage/364' in /home/vagrant/test/test_image.php:73
Stack trace:
#0 /home/vagrant/test/test_image.php(73): Imagick->readimageblob('\x00\x00\x01\x00\x02\x00\x10\x10\x00\x00\x01\x00 \x00h...')
#1 {main}
  thrown in /home/vagrant/test/test_image.php on line 73
有什么想法吗?

在阅读blob之前,您需要调用


完美!现在我的问题是,如果favicon中有多个尺寸,图像会破坏图标。有什么想法吗?听起来不错。如果您仅尝试提取图像,请使用多种迭代器方法之一。我将用一个例子更新我的答案。