はじめて質問させていただきます。
キクチヒロキと申します。
先輩エンジニア様にヒントをいただきたく思い、質問させていただきます。
前提・実現したいこと
●前提/ツールver情報
PHP Version 7.1.13 | サーバー CPI | ImageMagick 6.9.9-28 | imagick module version 3.4.3RC |
※対応フォーマットに、SVG, SVGZ,PNGなどは確認済
●実現したいこと
・ブラウザ上で、SVG⇒PNG(透過png)に変換
・SVGの形式を問わない形で変換を実現
発生している問題・エラーメッセージ
Fatal error: Uncaught ImagickException: no decode delegate for this image format `' @ error/******/******/ in /usr/******/imagick_test.php:11
該当のソースコード
php
1<?php 2ini_set('display_errors', 1); 3$svg = 'hogehoge.svg'; 4$svg = file_get_contents( $svg ); 5$png = 'hogehoge.png'; 6$im = new Imagick(); 7$im->newImage(300, 300, new ImagickPixel('transparent')); 8$im->setImageFormat('png'); 9$im->setBackgroundColor('transparent'); 10$im->readImageBlob($svg); 11$im->writeImage($png); 12$im= new Imagick(realpath($png)); 13$im->setImageFormat('png24'); 14header("Content-Type: image/png"); 15echo $im; 16//後処理 17$im->clear(); 18$im->destroy(); 19?>
試したこと
エラーを読んだところ、SVGがうまく読み込めていないようなので、SVGの書き出し形式をイラレで変更(ver1.1 CSS/プレゼンテーション属性)を付与した状態で、保存し直し、SVGに変更を掛けるとうまくいく
しかし、対象のSVGがかなりの数があるので、出来ればSVGのverなどを問わない形でPNG変換を実現したい。
同一のご経験や、ご先輩などのアドバイスを頂戴出来ればと思います。
何卒よろしくお願いいたします。
あなたの回答
tips
プレビュー