MENU
カタログクリップ
本ページはプロモーションを含みます。

動的に生成したSVG形式画像データを、IMGタグに埋め込んで表示する方法!

2020 6/28
広告
コンピューター
2016年11月29日2020年6月28日


クライアントサイドにあるsvgデータを、ユーザが右クリック保存でダウンロードできるように、imgタグに埋め込む方法を紹介します。データをajax + phpなどで取得したり、javascript(D3.js)などで生成した場合に使います。

svgは、ベクター形式の画像データ形式のひとつです。ベクターデータなので、拡大縮小などによる劣化がなく、最近流行りのレスポンシブデザインに向いています。また、その実体はテキストデータであり、javascriptやphpなどで用意に扱うことが出来ます。ユーザが、gifやpngなどへ変換したい場合も、inkscapeやillustratorを使ってで簡単に変換することができます。

svgデータをWebページに表示する方法には、データをhtmlにインラインで埋め込む方法と、imgタグを使う方法があります。ブラウザにimgタグで読み込ませると、 javascriptでsvgを加工することができなくなるという欠点がある一方で、ユーザは右クリック保存ができるという利点があります。

サーバーサイドにある場合は、単純にそのまま読めば良いですが、クライアントサイドの場合はsrc=”data:~~”を使って埋め込みます。

目次

サーバーサイドにある場合

単純ににsvgイメージファイルがサーバーにある場合は、imgタグを使って次のように読み込めます。

<img src="./sample.svg">

また、phpでsvgを生成している場合でも、サーバーへ直接ブラウザが読みにいっても問題がない場合は、次のように読み込むことができます。

<img src="./sample.php?x=320&y=480">

getで良いなら、phpに値を渡すこともできます。

 

クライアントサイドにある場合

ajaxを使ってsvgデータを取得した場合や、D3.jsなどでjavascriptでsvgデータを生成した場合、データがクライアントサイドにあります。このようなデータをimgタグで表示するには、次のようにsrc属性に、data URIスキームを指定します。

<img src='data:image/svg+xml,&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;320&quot; height=&quot;320&quot; viewBox=&quot;0 0 320 320&quot;&gt;&lt;circle cx=&quot;150&quot; cy=&quot;150&quot; r=&quot;100&quot; fill=&quot;#c39&quot;&gt;&lt;/circle&gt;&lt;/svg&gt;'>

つまり、持っているデータをjavascriptなどで、data:image/svg+xml,の後に足してやって、src属性にしてやればよいです。

データは文字参照(エスケープ)してください。一方、document.getElementsByTagName(“img”)[0].src = src;などとして代入する場合は、自動でエスケープされますので、エスケープしないでください。

IE8,9では制限がありますので注意が必要です。詳しくは参考文献のwikipediaを御覧ください。

例

参考文献

  • Data_URI_scheme – wikipedia
  • 文字参照 – wikipedia

 

コンピューター
highlightjs

関連記事

  • Speed Wi-Fi DOCK 5G 01の実機使用レビュー。
    2025年4月16日
  • AXE5400VとAX80Vの3つの違い。[Wi-Fiルーター]
    2025年4月7日
  • Archer AXE5400とAX80の3つの違い。[Wi-Fiルーター]
    2025年4月7日
  • Archer AXE5400とAX5400の3つの違い。[Wi-Fiルーター]
    2025年4月6日
  • Archer AX3000とAX1800の2つの違い。[Wi-Fiルーター]
    2025年4月6日
  • Archer AX3000VとAX23Vの2つの違い。[Wi-Fiルーター]
    2025年4月5日
  • Archer AX80とAX5400の3つの違い。[Wi-Fiルーター]
    2025年4月5日
  • Archer AX80VとAX73Vの3つの違い。[Wi-Fiルーター]
    2025年4月5日
カテゴリー
  • コンピューター
    • gnuplot & eps
    • mac
    • matplotlib
    • wordpress
  • ホーム・家電
    • アイロン
    • オーディオ
    • オーラルケア
      • ジェットウォッシャー
      • 音波振動歯ブラシ
    • カメラ
    • カー用品
    • クリーナー
    • テレビ、レコーダー
    • ドアホン
    • メンズ美容家電
      • ラムダッシュ
    • ルンバ
    • 一覧比較
    • 工具
    • 浄水器
    • 温水洗浄便座
    • 炊飯器
    • 空気清浄機・加除湿機
    • 空調・季節家電
    • 美容家電
      • フェイスケア
      • ヘアケア
      • ボディーケア
    • 血圧計
    • 調理器具
    • 電子レンジ
  • 健康
  • 家事
    • パン
    • 料理
    • 育児
    • 食品
      • おせち
      • コーヒー
  • 書籍
  • 知識
  • 趣味
    • ペン字
    • ロードバイク・クロスバイク
    • 車
    • 鉄道模型
    • 電子工作
サイト内検索
最近の投稿
  • モナークHGとモナークM7の4つの違い。[ニコン双眼鏡]
  • ニコン モナーク M7とM5の4つの違い。[双眼鏡]
  • Speed Wi-Fi DOCK 5G 01の実機使用レビュー。
  • RZ-760、GT-760、ST-760の違い。[ガス缶・CB缶]
  • RZ-730、RZ-730S、RZ-730SBK、RZ-730SWH、ST-Y450の違い。
  • TC-EA35WとTC-E123SBKの違いを比較。[スティッククリーナー]
  1. ホーム
  2. コンピューター
  3. 動的に生成したSVG形式画像データを、IMGタグに埋め込んで表示する方法!
  • ホーム
  • プライバシーポリシー

© カタログクリップ
contact@beiznotes.org

目次