質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
SVG

SVGは、XMLを基盤とした2Dベクター画像記述言語。画像を線・面といった図形の集合体として扱うベクター画像のため、環境に適した表示が可能です。アニメーション機能もサポートされており、簡単なインタラクティブコンテンツ作成もできます。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

ImageMagick

ImageMagickとは、画像の表示や操作を行うオープンソースのソフトウェアです。プログラムはCで書かれており、GIFやJPEG、PDFなど画像ファイルフォーマット100種類以上に対応しています。

Q&A

解決済

1回答

2454閲覧

PHPでSVGをPNGに変換する(T_String Error)

退会済みユーザー

退会済みユーザー

総合スコア0

SVG

SVGは、XMLを基盤とした2Dベクター画像記述言語。画像を線・面といった図形の集合体として扱うベクター画像のため、環境に適した表示が可能です。アニメーション機能もサポートされており、簡単なインタラクティブコンテンツ作成もできます。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

ImageMagick

ImageMagickとは、画像の表示や操作を行うオープンソースのソフトウェアです。プログラムはCで書かれており、GIFやJPEG、PDFなど画像ファイルフォーマット100種類以上に対応しています。

0グッド

0クリップ

投稿2021/11/30 23:41

編集2021/12/02 08:04

いくつかの英語や日本語のサイトを参考にして、
SVGからPNGに変換するコードを書いたのですがエラーが発生しました。

●エラー内容
syntax error, unexpected ' ' (T_STRING) on line 79

エラーが出ているline 79は $image->readImageBlob($svg_file); の部分です。

PHP

1<?php 2 $usmap = __DIR__ . '/../../../uploads/svg/2021/11/test.svg'; 3 $svg_file = file_get_contents($usmap); 4 $image = new imagick(); 5 $image->setBackgroundColor(new ImagickPixel('transparent')); 6 $image->readImageBlob($svg_file); // エラー部分 7 $image->setImageFormat("png32"); 8 $image->writeImage('result.png'); 9 10 $image->clear(); 11 $image->destroy(); 12?>

●試したこと

  • SVGのPathが間違っているのかと思いSVGファイルをechoで表示させてみたのですが、問題なく表示されたのでSVGのPathは正しいと思います。
  • エラー内容をGoogleで検索し、いろいろなサイトを見たのですが似たようなエラーが出た人を見つけることが出来ませんでした。
  • $image->readImageBlob($svg_file); を $image->readImageFile($svg_file); に変更してみましたが、同じエラーがでました。
  • $image=->writeImage('rsult.png'); を $image->writeImage('result.png'); に変更しました。
  • $image->setFormat('svg'); の削除
  • $usmap = realpath('../') . '/wp-content/uploads/svg/2021/11/test.svg'; を $usmap = DIR . '/../../../uploads/svg/2021/11/test.svg'; に変更しました。

PHPに詳しい方、同じようなエラーが出て解決された方、参考になるサイトをご存知の方ご回答よろしくお願いいたします。

●利用環境
WordPress
ImageMagickインストール済み
Visual Studio Code
Google Chrome
Mac

SVGファイルをアップロード出来ないみたいなのでコードを記載します。

SVG

1<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 500 454.55"><defs><style>.ab421ae0-01bd-4030-abc3-186d88f31681{fill:#1f2033;}.e6cc0fbe-9bee-4014-820a-52a85aa1d4ce{fill:#2f334d;}.b6699dbd-c0c0-45fd-952c-6c4773c59670{fill:#3e4369;}.acdaaa3b-849a-497f-95d2-4607b7da80c0{fill:#656a8f;}.ecfb24c0-ec2d-4647-a73c-573244a93fae{fill:#9da5c7;}.bf5a898f-b261-4c31-a45d-0c509323d8ee{fill:#fff;}</style></defs><g id="e8bdc8ae-1835-484f-804f-2e03d1da7ec9" data-name="Layer 2"><g id="f59ba66e-be7c-403e-967b-e1dd268b22e9" data-name="Layer 5"><rect class="ab421ae0-01bd-4030-abc3-186d88f31681" width="500" height="454.55"/><path class="e6cc0fbe-9bee-4014-820a-52a85aa1d4ce" d="M500,63.08A183.23,183.23,0,0,0,454.7,0H121.8Q107,9,92.71,19.46C54.74,47.31,23.58,80.25,0,115.54V409.66c18.81,19.55,41.58,34.51,67.05,44.89H265A388.37,388.37,0,0,0,371.2,399.12c62.61-45.92,106.73-105.67,128.8-167Z"/><path class="b6699dbd-c0c0-45fd-952c-6c4773c59670" d="M128.62,63.1C65.75,107.18,19.27,167.54,0,225V328.34A98.82,98.82,0,0,0,9,344c51.66,73.67,195.37,64,306.74-14.12S475.46,128.78,423.8,55.1,240-15,128.62,63.1Z"/><path class="acdaaa3b-849a-497f-95d2-4607b7da80c0" d="M72.3,294.49c-34.93-52-.68-129.23,75.39-176.51s165.16-46.62,200.09,5.32,1.59,132.37-74.49,179.64S107.24,346.43,72.3,294.49Z"/><ellipse class="ecfb24c0-ec2d-4647-a73c-573244a93fae" cx="210.04" cy="208.89" rx="110.72" ry="76.85" transform="translate(-69.75 111.58) rotate(-25.67)"/><ellipse class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="207.18" cy="201.66" rx="56.76" ry="40.56" transform="translate(-67.17 110.42) rotate(-25.83)"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="87.78" cy="77.65" r="4.24"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="352.72" cy="132.83" r="3.31"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="274.21" cy="20.32" r="4.34"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="150.63" cy="403.01" r="4.65"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="33.37" cy="389.4" r="2.58"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="468.42" cy="195.7" r="2.79"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="441.09" cy="44.59" r="2.48"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="53.18" cy="351.93" r="4.75"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="189.54" cy="112.26" r="4.96"/><path class="bf5a898f-b261-4c31-a45d-0c509323d8ee" d="M305.15,63.14c-1,6.57-1,8.2-9,9.8,7.36,1.09,8,4.25,8.85,10.14.86-5.92,2.05-8.17,8.3-8.55C306.81,71.9,306.1,69.64,305.15,63.14Z"/><path class="bf5a898f-b261-4c31-a45d-0c509323d8ee" d="M49.57,238.59c1.82,5.93,2.48,7.3-3.65,11.91,6.63-2.06,8.46.33,11.55,5-1.67-5.33-1.58-7.71,3.53-10.56C54.51,245.3,53,243.68,49.57,238.59Z"/><path class="bf5a898f-b261-4c31-a45d-0c509323d8ee" d="M457.89,131.42c1.74-5.72,1.95-7.18,9.34-7.55-6.42-1.94-6.59-4.84-6.56-10.2-1.55,5.16-2.9,7-8.53,6.54C457.55,123.4,457.89,125.5,457.89,131.42Z"/><path class="bf5a898f-b261-4c31-a45d-0c509323d8ee" d="M342.41,435.88c1.52-5,1.71-6.3,8.18-6.63-5.62-1.7-5.77-4.24-5.75-8.94-1.35,4.52-2.54,6.15-7.47,5.73C342.11,428.84,342.41,430.69,342.41,435.88Z"/><path class="bf5a898f-b261-4c31-a45d-0c509323d8ee" d="M103.14,37.66c1.39-4.55,1.55-5.71,7.42-6-5.09-1.53-5.23-3.84-5.21-8.1-1.22,4.1-2.3,5.58-6.77,5.2C102.88,31.28,103.15,33,103.14,37.66Z"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="410.7" cy="219.96" r="2.32"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="26.4" cy="147.64" r="2.32"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="52.88" cy="22.89" r="2.32"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="87.78" cy="410.57" r="2.32"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="189.54" cy="195.7" r="2.32"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="106.9" cy="158.51" r="2.32"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="429.21" cy="315.53" r="2.32"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="459.69" cy="410.57" r="3.31"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="212.48" cy="10.03" r="3.62"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="392.55" cy="254.02" r="1.45"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="394.79" cy="79.34" r="1.96"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="67.67" cy="298.28" r="1.55"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="440.27" cy="337.04" r="4.65"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="16.66" cy="205.17" r="4.34"/><path class="bf5a898f-b261-4c31-a45d-0c509323d8ee" d="M392.55,143.38c-3.71,3.52-4.47,4.52-10.12,1.68,3.95,4.14,2.86,6.37.57,10.34,3.33-3.18,5.12-4,9.09-1.27C389.42,149.49,390.05,147.78,392.55,143.38Z"/><path class="bf5a898f-b261-4c31-a45d-0c509323d8ee" d="M83.35,113.69c-2.17,5.7-2.48,7.17-10,7,6.38,2.42,6.36,5.38,6,10.83,1.93-5.14,3.44-6.94,9.12-6.06C83.13,121.88,82.93,119.71,83.35,113.69Z"/><path class="bf5a898f-b261-4c31-a45d-0c509323d8ee" d="M472,279.28c4.47-3.15,5.44-4.09,11-.2-3.54-5-2-7.2,1-11.05-4,2.86-6,3.43-9.83-.07C476.23,273.3,475.29,275,472,279.28Z"/><path class="bf5a898f-b261-4c31-a45d-0c509323d8ee" d="M194.59,447.7c3.24-2.28,3.94-3,8-.14-2.57-3.63-1.48-5.21.72-8-2.91,2.08-4.37,2.49-7.12,0C197.69,443.37,197,444.61,194.59,447.7Z"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="295.01" cy="29.46" r="2.32"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="379.82" cy="320.71" r="2.32"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="121.05" cy="27.54" r="2.32"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="7.93" cy="272.71" r="2.32"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="220.24" cy="165.69" r="2.32"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="177.88" cy="85.57" r="2.32"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="335.71" cy="407.49" r="2.32"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="362.49" cy="7.92" r="4.24"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="262.54" cy="254.5" r="3.31"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="386.89" cy="196.52" r="4.34"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="40" cy="10.47" r="4.65"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="180.71" cy="357.66" r="2.79"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="334.26" cy="356.73" r="2.48"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="310.89" cy="97.29" r="4.96"/><path class="bf5a898f-b261-4c31-a45d-0c509323d8ee" d="M331.6,225.1c-6.3-2.11-7.91-2.38-8.1-10.59-2.34,7.05-5.56,7.16-11.52,7,5.69,1.86,7.71,3.43,7,9.65C322.68,225.23,325,224.91,331.6,225.1Z"/><path class="bf5a898f-b261-4c31-a45d-0c509323d8ee" d="M245.83,358.34c5.35,2.7,6.74,3.16,5.84,10.5,3-6,5.9-5.66,11.18-4.71-4.82-2.41-6.42-4.06-5-9.52C253.8,359.39,251.66,359.36,245.83,358.34Z"/><path class="bf5a898f-b261-4c31-a45d-0c509323d8ee" d="M399.24,25c4.25,2.15,5.36,2.51,4.64,8.34,2.39-4.75,4.69-4.5,8.88-3.74-3.83-1.91-5.1-3.23-4-7.56C405.57,25.86,403.87,25.83,399.24,25Z"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="166.74" cy="296.62" r="2.32"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="228.69" cy="82.94" r="2.32"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="279.55" cy="7.92" r="2.32"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="73.89" cy="289.44" r="2.32"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="407.64" cy="137.48" r="3.62"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="174.27" cy="274.49" r="1.45"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="308" cy="305.15" r="1.96"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="46.32" cy="305.61" r="4.65"/><path class="bf5a898f-b261-4c31-a45d-0c509323d8ee" d="M245.3,291.92c-2.83-4.26-3.68-5.19.09-10.26-4.76,3.18-6.77,1.72-10.29-1.22,2.56,3.83,3.05,5.73-.32,9.18C239.82,287.78,241.4,288.7,245.3,291.92Z"/><path class="bf5a898f-b261-4c31-a45d-0c509323d8ee" d="M88.57,353.71c2.34,5,3.09,6.06-1.69,10.86,5.54-2.63,7.44-.78,10.71,2.88-2.12-4.45-2.34-6.54,1.76-9.67C93.73,358.94,92.2,357.72,88.57,353.71Z"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="374.31" cy="215.43" r="2.32"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="72.8" cy="248.87" r="2.32"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="406.13" cy="44.4" r="2.32"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="252.97" cy="118.34" r="2.32"/><circle class="bf5a898f-b261-4c31-a45d-0c509323d8ee" cx="339.18" cy="90.4" r="2.32"/></g></g></svg>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

skys215

2021/12/01 00:28

readImageBlobじゃなくreadImageFileは試しましたか?
m.ts10806

2021/12/01 02:07

$image=->writeImage('result.png'); ↑そもそもここでシンタックスエラーになるのでは
退会済みユーザー

退会済みユーザー

2021/12/01 03:10

skys215さん readImageFileを試してみましたが全く同じエラーがでました。アドバイスありがとうございます。 m.ts10806さん 気が付かなかったです!修正しました。ご指摘ありがとうございます。
m.ts10806

2021/12/01 03:14

質問本文のコードはそのままのようですが。
退会済みユーザー

退会済みユーザー

2021/12/01 03:37

本文のコードも修正しました。ありがとうございます。
skys215

2021/12/01 04:27

svgファイルをアップさせることはできますか? こっちでも試したいです。
退会済みユーザー

退会済みユーザー

2021/12/01 05:02

すみませんSVGのファイルはこのサイトにアップできないみたいなので、そのSVGファイルのコードを記載しました。お手数をおかけして申し訳ありません。よろしくお願いいたします。
surface_0

2021/12/01 11:02

自分の環境で試してみましたが、提示されているものとは別のエラーが出ました。(writeImageの箇所) ですが、下記の行をコメントアウトしたら問題なく動作しました。 > $image->setFormat('svg'); 関係あるかわかりませんが、ご参考ください。
skys215

2021/12/01 14:27

そうですね、私もやってみましたが、$image->setFormat('svg');をコメントアウトしたらできました。
退会済みユーザー

退会済みユーザー

2021/12/02 07:57

surface_0さん skys215さん お返事遅れてすみません。$image->setFormat('svg')の部分は必要なさそうですね。ご指摘ありがとうございます。ただ$image->setFormat('svg')を消した後でも同じエラーが出たので、色々その後試したのですが、どうやらファイルパスを間違えていたようです。ファイルパスをフルパスで試してみたら問題なく動作しました。初歩的なミスですみません。 なぜか同じファイルパスの記述で直接SVGを表示することはできたので気がつきませんでした。 変更内容は下記です。 $usmap = realpath('../') . '/wp-content/uploads/svg/2021/11/test.svg'; ↓ $usmap = __DIR__ . '/../../../uploads/svg/2021/11/test.svg'; 初歩的なミスでしたが、別の二箇所の間違いもご指摘いただきありがとうございました。 ご回答いただいたskys215さん、m.ts10806さん、surface_0さん本当にありがとうございました。
guest

回答1

0

ベストアンサー

ファイルパスのミスでしたが、別の二箇所の間違いもご指摘していただきありがとうございました。
最終的にコードは下のようになりました。

PHP

1<?php 2 $usmap = __DIR__ . '/../../../uploads/svg/2021/11/test.svg'; 3 $svg_file = file_get_contents($usmap); 4 $image = new imagick(); 5 $image->setBackgroundColor(new ImagickPixel('transparent')); 6 $image->readImageBlob($svg_file); 7 $image->setImageFormat("png32"); 8 $image->writeImage('result.png'); 9 10 $image->clear(); 11 $image->destroy(); 12?>

投稿2021/12/02 08:10

編集2021/12/02 08:14
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問