我遇到了有关想象力阅读svg文本的麻烦,就像这样:
$xmlDoc = new DOMDocument();
$svgroot = $xmlDoc->createElement('svg');
$textnode = $xmlDoc->createElement('text');
$textnode->setAttribute('font-size','24');
$textnode->setAttribute('transform','matrix(3.1054,0,0,3.1054,158.5,0)');
$textnode->setAttribute('font-family','helvetica');
$textnode->appendChild($xmlDoc->createTextNode("eeee"));
$textnode = $svgroot->appendChild($textnode);
$xmlDoc->appendChild($svgroot);
$svgtext = new Imagick();
$svgtext->setbackgroundcolor('#00000000');
$svgtext->readImageBlob($xmlDoc->saveXML());
它将在最后一行readImageBlob函数抛出异常(“helvetica”字体已经安装在windows / fonts中。)。 它说:
Uncaught exception 'ImagickException' with message 'must specify image size `C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/1/magick-270886DDFFPHkGTr' @ error/mvg.c/ReadMVGImage/185' in C:\xampp\htdocs\opencart\imagicktest.php:106 Stack trace: #0 C:\xampp\htdocs\opencart\imagicktest.php(106): Imagick->readimageblob('<?xml version="...') #1 {main} thrown in C:\xampp\htdocs\opencart\imagicktest.php on line 106
仅在Windows Server 2003下出现此错误。当在winXP下运行imageMagic时,不会抛出此异常。 我认为这个bug与https://bugzilla.redhat.com/show_bug.cgi?id=193474
类似 可能是windows2003需要安装一些东西才能支持imagick render svg font?答案 0 :(得分:-1)
由于根ImagickException
元素中缺少图像大小属性,因此抛出svg
。不同版本的ImageMagick&amp; SVG系统库将有助于您的体验行为。要解决此问题,只需使用viewBox
,x
和&amp; y
属性。
$xmlDoc = new DOMDocument();
$svgroot = $xmlDoc->createElement('svg');
$svgroot->setAttribute('viewBox','0 0 60 24'); // Set the viewable canvas
$svgroot->setAttribute('x',0); // Left offset
$svgroot->setAttribute('y',16); // Top offset
$svgroot->setAttribute('width',60); // Optional rendering width
$svgroot->setAttribute('hieght',24); // Optional rendering height