PHP使用imagick转换svg到jpg垂直文本变成横向

时间:2016-11-16 10:17:30

标签: php svg imagemagick imagick

我想通过使用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。

任何人都知道如何解决这个问题? 非常感谢任何建议。

1 个答案:

答案 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的工作代码。这可能会有所帮助。