Powrót do bloga

Konwersja Data URI z powrotem do edytowalnego SVG

Dowiedz sie, jak odzyskac edytowalny SVG z Data URI, rozpoznac Base64 i URL encoding, sprawdzic XML oraz uniknac typowych ryzyk.

9 lip 2026SVGData URIBase64Dekoder SVGFrontendSVGView

Konwersja Data URI z powrotem do edytowalnego SVG

SVG Data URI jest wygodne dla malych ikon inline w HTML lub CSS. Problem zaczyna sie wtedy, gdy masz tylko dlugi lancuch data:image/svg+xml... i potrzebujesz odzyskac edytowalny plik SVG.

Bezpieczna zasada jest prosta: podziel ciag na pierwszym przecinku, dekoduj tylko payload, a potem sprawdz SVG przed zapisem. Ten poradnik nawiazuje do dyskusji Stack Overflow Converting a data URI back to SVG.

Rozpoznaj format

data:image/svg+xml;base64,PHN2ZyB4bWxucz0i...
data:image/svg+xml,%3Csvg%20xmlns%3D%22http...

Przed przecinkiem znajduje sie typ MIME i kodowanie. Po przecinku znajduje sie zakodowana tresc SVG.

Dekodowanie Base64

function dataUriBase64ToSvg(dataUri) {
  const [, payload] = dataUri.split(",", 2);

  if (!payload) {
    throw new Error("Invalid SVG Data URI");
  }

  return new TextDecoder().decode(
    Uint8Array.from(atob(payload), (char) => char.charCodeAt(0)),
  );
}

TextDecoder lepiej chroni tekst UTF-8, symbole i metadane niz zalozenie, ze SVG jest czystym ASCII.

Dekodowanie URL encoding

function dataUriEncodedToSvg(dataUri) {
  const [, payload] = dataUri.split(",", 2);

  if (!payload) {
    throw new Error("Invalid SVG Data URI");
  }

  return decodeURIComponent(payload);
}

Ten wariant czesto pojawia sie w tla CSS, bo przy prostych ikonach bywa krotszy i czytelniejszy.

Uniwersalny dekoder

function dataUriToSvg(dataUri) {
  const [header, payload] = dataUri.split(",", 2);

  if (!header?.startsWith("data:image/svg+xml") || !payload) {
    throw new Error("Expected an SVG Data URI");
  }

  if (header.includes(";base64")) {
    return new TextDecoder().decode(
      Uint8Array.from(atob(payload), (char) => char.charCodeAt(0)),
    );
  }

  return decodeURIComponent(payload);
}

Po dekodowaniu sprawdz, czy wynik ma korzen <svg> i czy da sie go sparsowac jako XML.

Dobre praktyki

  1. Zweryfikuj odzyskany XML.
  2. Usun skrypty, event handlery, zewnetrzne referencje i foreignObject.
  3. Sprawdz viewBox, rozmiar i przycinanie.
  4. Otworz wynik w SVG Viewer.
  5. Wyeksportuj nowy ciag w SVG to Data URI.

Typowe bledy

  • Dekodowanie calego lancucha zamiast samego payloadu.
  • Uzycie Base64 dla SVG zakodowanego jako URL.
  • Ponowne uzycie niezaufanego SVG bez sanitizacji.
  • Traktowanie escaping w CSS, HTML i JSON tak samo.

Workflow SVGView

Zdekoduj Data URI, wklej SVG do SVG Viewer, oczysc markup w SVG Sanitizer, zoptymalizuj w SVG Optimizer i wygeneruj nowy Data URI w SVG to Data URI.

Powiązane artykuły

Kontynuuj odkrywanie przepływów pracy SVG i wskazówek dotyczących produkcji.