【色変更・プレビュー機能付き】SVGタグをBase64変換してCSSのbackground-imageプロパティ用に変換するツール【Photoshop,Illustrator】

業務効率化



SVGプレビュー:


※fill値が無いなど色変更できない場合もあります
※色を選択するとbackground-imageプロパティのコードも変わります

本変換ツールの特長

このツールは、SVGタグから直接CSSのbackground-imageプロパティへの変換を簡単に行うことができる無料のウェブアプリです。PhotoshopやIllustratorでコピーされたSVGコードやインターネット上で見つけたSVGファイルも対応しており、クラスやスタイルをサニタイズしてセキュリティを考慮しています。変換されたコードはプレビューでリアルタイムに表示され、安全かつ迅速にCSS用に変換可能です。<svg>の中身をBase64変換してCSSのbackgroundプロパティ用に書き換えて出力します。

Photoshop, Illustratorで書き出されたSVGは色の指定がカラーピッカーで(ほぼ)変更可能です。
※一部無料で配布されているSVGも対応しますが、カラーが指定されているSVGや複雑なSVGでは色の変更が出来ない場合があります。

生成されたbackground-imageプロパティはCSSでそのまま使えるので非常に強力なツールになり得るかと考えています。

プレビューエリアをデベロッパーツールで見ると生成されたCSSがべた書きされているのでそれを持ってってもらってもOKです。一番おすすめは、background-size::before::afterの併用でしょう。この方法でやればSVGファイルをアップする手間もなく、瞬時にCSSのみで再現することが出来ます。※微妙な調整は個々でおこなうようにお願いします。

特に隠すことでもないのでソースコード載せておきます

なんかの参考になれば幸いです。当ページをたまに使ってくれればそれで十分です。

let originalSVG = '';

function updatePreview() {
    let svgInput = document.getElementById("svgInput");
    originalSVG = svgInput.value;
    setSVGBackground(originalSVG);
}

function applyColorChange() {
    let colorPicker = document.getElementById("colorPicker");
    if (originalSVG !== "") {
        let updatedSVG = originalSVG.replace(/(<svg[^>]*>)|(<\/svg>)/gi, (match) => match)
            .replace(/fill="([^"]*)"/gi, `fill="${colorPicker.value}"`)
            .replace(/fill:([^;>]*)/gi, `fill:${colorPicker.value}`);
        setSVGBackground(updatedSVG);
    }
}

function setSVGBackground(svg) {
    let cssOutput = document.getElementById("cssOutput");
    let preview = document.getElementById("preview");
    let encodedSVG = btoa(unescape(encodeURIComponent(svg)));
    cssOutput.value = `background-image: url('data:image/svg+xml;base64,${encodedSVG}');`;
    preview.style.backgroundImage = `url('data:image/svg+xml;base64,${encodedSVG}')`;
}

document.getElementById("colorPicker").addEventListener("input", applyColorChange);

何か追加機能のご要望やバグの報告等ありましたらhttps://engineering.webstudio168.jp/contact/までご一報ください。善処はします。時間があればですが、、、

タイトルとURLをコピーしました