SVG Vektörü (.svg)

W3C Standart

Scalable Vector Graphics (SVG); etkileşim, CSS biçimlendirmesi ve animasyon desteğine sahip, iki boyutlu grafikler için XML tabanlı bir vektör görüntü formatıdır.

SVG biçimini PNG biçimine dönüştür

Tarayıcında SVG biçimini PNG biçimine ücretsiz dönüştür. Dosyaları cihazında anında dönüştür.

SVG dosyasını çevrimiçi sıkıştır

Özel - dosyalar cihazınızdan asla ayrılmaz

İncele ve Meta Veriler

İşletim sistemleri ve dosya çözümleyicileri, SVG dosyalarını başlangıçtaki ikili sihirli bayt dizisini inceleyerek tanımlar:

Dosyaları buraya seç veya bırak

Özel - dosyalar cihazınızdan asla ayrılmaz

veya yapıştır Ctrl+V
Sıfır Ağ Aktarımı Gizlilik Garantisi: Harici sunuculara 0 bayt yüklendi. Tüm işlemler tarayıcındaki korumalı alanda (sandbox) yerel olarak gerçekleştirildi.

Bayt düzeyinde başlık imzası (sihirli baytlar)

İşletim sistemleri ve dosya çözümleyicileri, SVG dosyalarını başlangıçtaki ikili sihirli bayt dizisini inceleyerek tanımlar:

HEX İMZASI (OFSET 0):

3C 73 76 67

ASCII GÖSTERİMİ: <svg

Standartlaştırma: W3C Recommendation (SVG 1.1 / SVG 2)

Teknik Özellikler

Kapsayıcı mimarisi2D vektör geometrisini tanımlayan XML tabanlı metin biçimlendirme belgesi
SıkıştırmaGzip / Brotli metin sıkıştırma (SVGZ, gzip sıkıştırması kullanır)
Bayt Düzeni (Endianness)Geçerli değil (Metin tabanlı UTF-8 / UTF-16 karakter akışı)
Renk UzaylarısRGB, CSS Color Module 4 (Display P3, lab, lch)
Kanallar ve YapıSınırsız çözünürlüklü vektör şekilleri, bezier eğrileri, tipografi ve opaklık maskeleri
Maksimum BoyutlarÇözünürlükten bağımsız (pikselleşme olmadan herhangi bir görüntü alanı boyutuna sonsuz şekilde ölçeklenir)
ŞeffaflıkTam değişken alfa şeffaflığı ve CSS harmanlama modları
Akış ve Aşamalı İşlemeTarayıcı XML ayrıştırıcısı tarafından desteklenen aşamalı metin akışı ayrıştırma

Teknik karşılaştırma matrisi: SVG ve rakipleri

Teknik NitelikSVG (Güncel)HTML5 CanvasPDFPNG
İşleme ModuMuhafaza edilen modlu vektör DOMAnında çizim yapan bitmap tuvaliKalıcı modda sabit sayfa kapsayıcısıTarama (raster) piksel ızgarası
Biçimlendirme ve CSSCSS sınıfları ve değişkenleri aracılığıyla tamamen biçimlendirilebilirJavaScript canvas API'siyle yeniden çizim gerektirirDinamik CSS biçimlendirmesi yokSabit tarama pikselleri
Sonsuz ÖlçeklenebilirlikEvet (matematiksel vektör eğrileri)Manuel çözünürlük ölçeklendirmesi gerektirirEvet (vektör öğeleri)Hayır (büyütüldüğünde pikselleşir)
EtkileşimYerel DOM olayları (üzerine gelme, tıklama, animasyonlar)Manuel tıklama algılama hesaplamaları gerektirirStatik belgeGörüntü haritası (image map) veya canvas gerektirir

Yaygın Bozulma Modları ve Hex Kurtarma Kılavuzu

Tarayıcı XML Ayrıştırma Hatası görüntüler: kapatılmamış belirteç veya eşleşmeyen etiket.

Kök Neden: Bozuk XML sözdizimi, eksik kapanış etiketleri veya kaçış karakteri kullanılmamış ve işaretleri ('&' yerine '&amp;').

Kurtarma: XML linter'ıyla (xmllint file.svg) doğrula ve dengesiz etiketleri düzelt.

Güvenlik Analizi ve Ayrıştırıcı Saldırı Vektörleri

SVG, '<script>' etiketlerini ve harici varlıkları destekleyen çalıştırılabilir bir XML olduğundan, güvenilmeyen SVG'ler görüntülendiğinde önemli XSS ve SSRF riskleri oluşturur.

Bilinen Saldırı Vektörleri

  • Gömülü '<script>' etiketleri veya 'onload=' olay işleyicileri aracılığıyla Saklı Siteler Arası Betik Çalıştırma (Stored XSS).
  • Arka uç sunucularında ayrıştırıldığında yerel sunucu dosyalarını okuyan XML Dış Varlık (XXE) saldırıları.
  • Hizmet reddine neden olan Milyar Gülüş (Billion Laughs) XML varlık genişlemesi.

Savunmaya yönelik en iyi uygulamalar: SVG'leri sayfaya eklemeden önce her zaman DOMPurify ile temizle. Alternatif olarak SVG'leri 'Content-Security-Policy: default-src 'none'' üstbilgisiyle ya da komut dosyalarını otomatik devre dışı bırakan '<img>' etiketleriyle sun.

Tarihsel kökenler ve önemli dönüm noktaları

2018W3C SVG 2 Aday Önerisi, modern CSS biçimlendirmesini entegre ediyor.
2011SVG 1.1 (İkinci Sürüm), SVG’nin masaüstü ve mobil tarayıcılarda geniş destek kazanmasına yardımcı oldu.
2001W3C, VML ve PGML önerilerinden geliştirilen SVG 1.0 belirtimini yayımladı.

Temel Avantajlar ve Artılar

  • Sonsuz çözünürlük bağımsızlığı: Herhangi bir ekranda veya baskı ölçeğinde keskin çizgiler ve tipografi.
  • Logolar, simgeler ve kullanıcı arayüzü öğeleri için son derece küçük dosya boyutu.
  • Tarayıcı DOM'u içinde CSS ve JavaScript aracılığıyla tamamen betiklenebilir ve biçimlendirilebilir.

Teknik Kısıtlamalar ve Eksiler

  • Fotoğraflar veya karmaşık sürekli tonlu görüntüler için uygun değildir.
  • Binlerce düğüme sahip karmaşık vektör yolları, CPU işleme gecikmesine ve yüksek pil tüketimine neden olabilir.
  • XML yapısı gömülü betiklemeye izin verir; bu nedenle güvenilmeyen yüklemeler işlenmeden önce sıkı bir temizlemeden geçirilmelidir.

İlginç Teknik Bilgiler

  • Gzip bazı SVG dosyalarının boyutunu önemli ölçüde azaltabilir; küçülme belge içeriğine ve sıkıştırma ayarlarına bağlıdır.
  • viewBox özniteliği, fiziksel ekran piksellerine dinamik olarak eşlenen soyut bir koordinat tuvali tanımlar.
  • Eski web tarayıcılarında başlangıçta yerel SVG motorları yoktu; bu durum, 2011 civarında yerel tarayıcı desteği güçlenmeden önce Adobe'nin Adobe SVG Viewer tarayıcı eklentisini dağıtmasına yol açtı.

Sıkça Sorulan Teknik Sorular

SVG dosyaları kötü amaçlı kod içerebilir mi?

Evet. SVG geçerli bir XML olduğundan, doğrudan bir tarayıcıda yüklendiğinde veya satır içi (inline) bir '<svg>' öğesinde açıldığında yürütülen gömülü JavaScript ('<script>') içerebilir. SVG'leri bir '<img>' etiketi aracılığıyla sunmak, betik yürütmeyi otomatik olarak etkisiz hale getirir.

Ne zaman PNG yerine SVG kullanmalıyım?

Ekran boyutları değişse de net görünmesi ve dosya boyutunun küçük kalması gereken simgeler, logolar, grafikler, çizimler ve tipografi için SVG kullan. Fotoğraflarda PNG veya WebP kullan.

Büyük veya karmaşık SVG dosyalarını nasıl optimize edebilirim?

SVGO gibi araçlarla veya SVG'yi sıkıştırarak gereksiz meta verileri, Inkscape ya da Illustrator'dan kalan yorumları, görünmez grupları ve kullanılmayan ad alanı bildirimlerini kaldırıp vektör yollarını sadeleştirebilirsin.