2017-03-03 6 views
0

でブロブ画像を読み込み、私はImagickでJPGを作成しようとしているが、私はreadImageBlob(PHP)Imagick

$image = new \Imagick(); 
$chart = '<?xml version="1.0" encoding="UTF-8" standalone="no"?>' . $chart; 
$image->readImageBlob($chart); 
$image->setImageFormat("jpeg"); 

にエラーが発生していることは言う:

またはゼロ画像サイズ `/tmp/magick-29893mIHq2qQrLKKP '@ error/image.c/SetImageExtent/2601

私が以前に言及した行を指しています。 $chartが定義されている方法に問題がある可能性があり

$chart = '<svg xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" class="highcharts-root" style="font-family:"lucida grande", "lucida sans unicode", arial, helvetica, sans-serif;font-size:12px;" xmlns="http://... (ETC) ...g></svg>'; 

:私は、以前のように$chartを定義していますか? $chartが正しいかどうかを確認するにはどうすればよいですか?

問題がまあ、私はSVGファイルでreadImageBlobを使用したBLOB

+0

'Imagick-> readImageBlob' **は、バイナリデータを期待** http://php.net/manual/en/imagick.readimageblob.php –

+0

:私はこのバイナリを読み取るために作られましたsvg、それをどうやってImagickで読むことができますか? – pmirnd

+0

[PHP Imagickを使ってSVGを読み込む方法](http://stackoverflow.com/questions/9226232/how-to-read-an-svg-with-a-given-size- using-php-imagick) –

答えて

0

にSVGを変換しないで、ブロブを読んでいます。だから、$チャートが含まれてい

//Set 2 temp files, one for the svg that I'll make and another one for the image that I will use later 
$filesvg = '/tmp/chart.svg'; 
$chartImage = '/tmp/tempchartimg.jpg'; 

//the svg had to use that header 
$chart = '<?xml version="1.0" encoding="UTF-8" standalone="no" ?>' . $chart; 

//I'll save the svg in the temp file made before 
file_put_contents($filesvg,$chart); 
//Coverting and save in as 'binaryImage' file the svg to jpg 
$binaryImage = shell_exec("convert $filesvg jpg:-"); 

//The the usal Imagick part: 
$image = new \Imagick(); 

//Now I can read a binary file 
$image->readImageBlob($binaryImage); 
$image->setImageFormat("jpg"); 
$image->setImageCompressionQuality(90); 
$image->resizeImage(600, 400, \imagick::FILTER_LANCZOS, 1); 
$image->writeImage($chartImage); 

//rest of my code... 
関連する問題