我想通过使用php imagick将svg转换为jpg,但结果不是我期待的;这是svg和jpg: enter image description here
代码为
$im = new Imagick();
$svg = file_get_contents($imageFile);
$im->readImageBlob($svg);
$im->setImageFormat('jpeg');
$im->writeImage($fileUrl.'.jpg');
$im->clear();
$im->destroy();
垂直文本变为横向,粗体文本比窗口更胖。
我的环境在centOS下,ImageMagick版本是7.8.2。
任何人都知道如何解决这个问题? 非常感谢任何建议。
答案 0 :(得分:0)
$svg = path to svg;
$im = new Imagick();
$skinurs= path to watermark.png;
$watermark = new Imagick();
$watermark->readImage($skinurs);
$im->readImageBlob($svg);
$im->setImageFormat("png32");
$im->setImageCompressionQuality(100);
$iWidth = $im->getImageWidth();
$iHeight = $im->getImageHeight();
$wWidth = $watermark->getImageWidth();
$wHeight = $watermark->getImageHeight();
$watermark->scaleImage($iWidth/3, $iHeight/2);
$wWidth = $watermark->getImageWidth();
$wHeight = $watermark->getImageHeight();
}
$im->compositeImage($watermark, imagick::COMPOSITE_OVER,0,0);
$im->resizeImage(720, 445, imagick::FILTER_LANCZOS, 1);
$base64=base64_encode($im);
$im->clear();
$im->destroy();
return 'data:image/jpg;base64,' . $base64;
这是将svg转换为png的工作代码。这可能会有所帮助。