Php imagick - проблемы с преобразованием SVG в PNG (неправильные размеры изображений, отсутствует изогнутый текст)
Я пишу код, который преобразует SVG-скрипт в PNG-изображение. Я столкнулся с двумя проблемами:
Все узлы изображений в скрипте SVG - их ширина растягивается. Я хочу определить только высоту, а ширину оставить на авто. В самом SVG это кажется хорошим.
Я попытался вставить изогнутый текст - но в выводе PNG я его не увидел.
Это мой SVG скрипт:
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="350px" height="100px" viewBox="0 0 350 100"> <defs> <path d="M 0,0 a 142.5,142.5 0 1,1 285,0 a 142.5,142.5 0 1,1 -285,0" id="curvedTextPath0" transform="translate(30,162)"></path> </defs> <image height="100px" width="350px" xlink:href="https://concepta.co.il/wp-content/uploads/2020/02/7-300x208.jpg" x="0px" y="0px" visibility="visible" preserveAspectRatio="xMidYMid meet"></image> <text fill="#2f299a" text-anchor="middle" font-size="25px" x="30" y="20" visibility="visible" font-family="M PLUS Rounded 1c"> <textPath startOffset="22%" xlink:href="#curvedTextPath0">lehcar</textPath> </text> </svg>
Это мой PHP код:
$im = new Imagick(); $im->setBackgroundColor(new ImagickPixel('transparent')); //$im->setResolution(300, 300); // for 300 DPI example $im->readImageBlob($svg); /*png settings*/ $im->setImageFormat("png32"); $folder_path = WP_CONTENT_DIR. 'uploads/concepta_orders_files'; if (!file_exists($folder_path)) { mkdir($folder_path, 0777, true); } $img_path = $folder_path . '/' . $fileName; /*(.jpg or .png)*/ $im->writeImage($img_path); $im->clear(); $im->destroy();
Спасибо за аванс!
Что я уже пробовал:
Я попытался проверить svg - код- это действительно так.
Я попытался установить свойство
preserveAspectRatio="xMidYMid meet"к изображениям - id не помог.
Я также изменил формат изображения.