Base64'ten PNG'ye Dönüştürücü

Base64 metnini gerçek bir PNG dosyasına dönüştürün. Ham bir dize veya data:image/png;base64 URI'si yapıştırın, saydamlığıyla birlikte önizleyin ve olduğu gibi kaydedin ya da diğer görsel biçimlerini PNG'ye dönüştürün.

Tamamen tarayıcınızda çalışır. Hiçbir veri yüklenmez.

Nasıl kullanılır

  1. Base64 dizesini veya tam data:image/png;base64 URI'sini yapıştırın.
  2. Önizlemeyi kontrol edin. Saydam alanlar dama tahtası deseni üzerinde görünür.
  3. İndirme biçimini PNG olarak bırakın. Veri JPEG, WebP veya başka bir biçimdeyse tarayıcınızda PNG'ye dönüştürülür.
  4. .png dosyasını indirin.

Base64 PNG'ler nereden gelir

Base64 olarak karşılaşma olasılığınızın en yüksek olduğu biçim PNG'dir. canvas.toDataURL() argümansız çağrıldığında bir PNG data URI'si döndürür. Tarayıcı otomasyon araçları ekran görüntülerini Base64 PNG olarak geri verir; örneğin Puppeteer'da page.screenshot({ encoding: 'base64' }) veya Selenium'da get_screenshot_as_base64(). Grafik oluşturucular, QR kod üreteçleri ve görsel üreten API'ler de resmi çoğu zaman JSON içinde bir Base64 alanı olarak döndürür.

Bir PNG dizesini tanımak kolaydır: her zaman iVBORw0KGgo ile başlar; bu, 89 50 4E 47 ile başlayan 8 baytlık PNG imzasının kodlanmış hâlidir. Ardından genişlik ve yüksekliği tutan IHDR parçasının başlangıcı olan AAAANSUhEUg gelir.

JSON'dan kopyalanan dizeleri önce hızlıca kontrol etmek gerekir. Örneğin PHP'nin json_encode fonksiyonu varsayılan olarak eğik çizgileri kaçış karakteriyle yazar; bu yüzden bir PHP API'sinden gelen PNG, \/ dizileri içerebilir. Yapıştırmadan önce bunları / ile değiştirin ve çevreleyen tırnak işaretlerini kaldırın.

Neden PNG olarak kaydetmeli

PNG hiçbir ayrıntıyı kaybetmeden sıkıştırır ve tam bir alfa kanalı saklar; böylece yumuşak gölgeler ve kenar yumuşatmalı (anti-aliased) kenarlar bozulmadan kalır. Bu da onu ekran görüntüleri, arayüz öğeleri, diyagramlar ve metin içeren her şey için doğal bir seçim yapar. Fotoğraflar için JPG veya WebP çok daha küçük dosyalar üretir.

Bir JPEG veya WebP dosyasını PNG'ye dönüştürmek ekranda görüneni birebir korur, ancak kayıplı sıkıştırmanın zaten attığı ayrıntıları geri getiremez ve PNG genellikle kaynaktan daha büyük olur.

Base64 PNG'yi kodla kaydetme

# Python
import base64
with open('screenshot.png', 'wb') as f:
    f.write(base64.b64decode(b64_string))

// Tarayıcı: elle kod çözmeden data URI'den Blob'a
const blob = await (await fetch(dataUri)).blob();
const url = URL.createObjectURL(blob);

Ters yönde mi ihtiyacınız var? PNG'den Base64'e aracı bir dosyayı dizeye veya data URI'ye kodlar.

Sıkça sorulan sorular

Bir Base64 dizesinin PNG olduğunu nasıl anlarım?
PNG verisi her zaman iVBORw0KGgo ile başlar. Araç ayrıca imza baytlarını doğrudan okur; bu nedenle data URI başka bir şey söylese bile gerçek biçimi bildirir.
PNG'ye dönüştürmek kaliteyi düşürür mü?

Hayır. PNG kayıpsızdır, bu nedenle pikseller tarayıcının çözdüğü hâliyle birebir saklanır. Tek kayıp, kaynak dosyada zaten oluşmuş olan kayıp olabilir.

Saydamlık korunur mu?

Evet. PNG çıktısı tam alfa kanalını korur. JPEG çıktısı saydam alanları beyazla doldurur; GIF çıktısı ise her pikseli ya tamamen saydam ya da tamamen opak hâle getirir.

PNG data URI'm bozuk bir görsel gösteriyor. Sorun ne?
Genellikle dize kesilmiştir. Elektronik tablo hücreleri (Excel 32.767 karakterde durur), günlük satırları ve veritabanı sütunları uzun değerleri sıklıkla kırpar. Yapıştırmadan önce çevreleyen tırnak işaretlerini ve \/ gibi JSON kaçış dizilerini de kaldırın.