Member 11736781 Ответов: 0

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 не помог.
Я также изменил формат изображения.

0 Ответов