SVGにラスター画像(jpgやpng)を組み合わせる

クラウド事業部のたまです。
すっかりシリーズ化していますが、今回もsvgファイルについて。

以前、svgはベクター画像であるということをご紹介しましたが、実はファイルの中にjpgやpngといったラスタ形式の画像を組み合わせることができるんです!

こちらは元の可愛い猫画像。この画像をsvgファイルに組み込んでみましょう。

コード————————————————————————————-

<svg id="neko_neko" xmlns="http://www.w3.org/2000/svg"
    xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 640 427">
    <defs>
        <style>
            .neko {
                fill: none;
                stroke: #e61673;
                stroke-linecap: round;
                stroke-linejoin: round;
                stroke-width: 21.78px;
            }
        </style>
    </defs>
    <g id="neko_love">
        <image width="640" height="427" xlink:href="../../svg/neko.jpg" />
        <path class="neko"
            d="M320.28,100.26c18.11-49.08,63.13-72.71,113.66-72.71,60.41,0,106.52,42.62,106.52,94.02,0,62.06-40.08,107.92-81.26,150.06-39.52,40.3-118.6,110.71-138.92,127.83h-1.1c-20.32-17.12-98.86-87.53-138.38-127.83-41.18-42.14-81.26-88-81.26-150.06,0-52.35,47.77-94.02,107.06-94.02,49.99,0,94.45,23.63,112.58,72.71h1.1Z" />
    </g>
</svg>

————————————————————————————-

<image> で指定されているのが猫のjpgファイル、<path>の部分がハートのsvgのパス指定です。
コードは上から下に読み込まれるので、jpgファイルが先に読み込まれ、ハート部分はjpgの上に重なるように描画されているんですね。
もちろん、逆にもできます。

可愛い猫の画像を切り抜いてpngにし、ハートの上に重ねてみました。

コード————————————————————————————-

<svg id="neko_neko2" xmlns="http://www.w3.org/2000/svg"
    xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 341.68 291.57">
    <defs>
        <style>
            .neko2 {
                fill: #e51373;
            }
        </style>
    </defs>
    <g id="neko_love2">
        <path class="neko2"
            d="M171.06,56.35C185.09,18.31,219.98,0,259.13,0c46.81,0,82.55,33.02,82.55,72.86,0,48.09-31.06,83.63-62.97,116.29-30.63,31.23-91.9,85.79-107.65,99.06h-.85c-15.75-13.27-76.61-67.83-107.24-99.06C31.06,156.49,0,120.95,0,72.86,0,32.29,37.02,0,82.97,0c38.74,0,73.19,18.31,87.24,56.35h.85Z" />
        <image width="239" height="280" transform="translate(39.62 11.57)" xlink:href="../../svg/neko.png" />
    </g>
</svg>

————————————————————————————-

重なっているのが透過pngなので、背景のsvgがちゃんと見えていますね。
以前ご紹介したように、styleをcssに書き出すことで、cssのみでsvgの色を簡単に変えることも可能です。

cssに書き出すことで、オンマウスでsvg部分のみ色を変えたりアニメーションしたりもできますね。

画像を重ねて表示することはcssを使って要素を重ねることも可能ですが、一つのファイルとして扱うことで扱いやすくなります。
svgファイルの特性を生かして、どんな面白いことができるか考えるのも楽しいですね。

author:

フォーム

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です