我有以下脚本,它运行良好,直到$ image-> readImageBlob($ svg),此时它会抛出:
ImagickException:内存分配失败了`/ tmp / magick-XXRrIUil'@ svg.c / ReadSVGImage / 2825 in Imagick-> readimageblob()( * 的第73行)。
<?php
//if its not a png, we're a registered user, they have confirmed an overwrite, so just replace it.
$file = file_save_data($image['contents'], $_GET['dir'].'/'.$_GET['name'], FILE_EXISTS_REPLACE);
cg_utils_watch("file object on svg save", "", $file); //logging function 1
$fhandle = fopen($file->uri, 'r');
$result = fread($fhandle, filesize($file->uri));
//apparently needed for image magic, see http://stackoverflow.com/questions/18661811/convert-svg-to-png-with-imagemagick-in-php top answer
$svg = '<?xml version="1.0" encoding="UTF-8" standalone="no"?>'.$result;
cg_utils_watch("fread result","",$svg); // logging function 2
fclose($fhandle);
//make png of svg for display on user end. svg is used for editing and pdf generation on order.
$image = new Imagick();
$image->readImageBlob($svg);
cg_utils_watch("png from svg", "", $image); //logging function 3
$image->setImageFormat("png24");
?>
基本上我想要一个svg文件并将其转换为png。但我似乎无法解决这个记忆问题。
有人有什么想法吗?
EDIT ::
只需对应用程序运行一个简单的测试,制作图像的缩略图。脚本成功完成,然后抛出一个seg错误。
脚本:
<?php
$im = new imagick( 'a.jpg' );
// resize by 200 width and keep the ratio
$im->thumbnailImage( 200, 0);
// write to disk
$im->writeImage( 'a_thumbnail.jpg' );
?>
结果是根目录中名为a_thumbnain.jpg的工作文件和“分段错误(核心转储)”的输出