Nasıl kullanılır
- Bir .jpg veya .jpeg dosyasını bırakma alanına sürükleyin, seçmek için tıklayın veya bir görsel yapıştırın.
- Dosyayı olduğu gibi korumak için dönüştürme yapmayın ("Orijinal biçimi koru"). Küçültmek için "Hedef biçim" olarak JPEG veya WebP seçin ve "Kalite" değerini düşürün.
- Fotoğraf, görüntüleneceği boyuttan büyükse bir "Maks. genişlik" belirleyin.
- İhtiyacınız olan çıktıyı kopyalayın (örneğin bir sayfa için img etiketini veya bir API için ham Base64'ü) ya da dosya olarak indirin.
Kısaca JPEG
JPEG, fotoğraflar için standart biçimdir. Gözün zor fark ettiği ayrıntıları atan kayıplı sıkıştırma kullanır ve saydamlık desteği yoktur. Dosya uzantısı .jpg, .jpeg veya bazen .jfif olur, ancak MIME türü her zaman image/jpeg olarak kalır; birçok tarayıcı kabul etse de image/jpg kayıtlı bir tür değildir. Bir JPEG data URI'si, kodlanmış görüntü başlangıcı işaretçisini içeren data:image/jpeg;base64,/9j/ ile başlar.
Kodlamadan önce fotoğrafı küçültme
Base64'ün en çok can yaktığı yer fotoğraflardır: 200 KB'lık bir JPEG yaklaşık 270 KB'lık metne dönüşür. En büyük farkı iki ayar yaratır:
- Maks. genişlik. Genişliği yarıya indirmek piksel sayısını dörtte birine düşürür. 4000 piksel genişliğindeki bir telefon fotoğrafına o boyutta nadiren ihtiyaç duyulur.
- Kalite. Yaklaşık %70 ile %80 arasındaki değerler ekranda genellikle orijinalle aynı görünür ve çok daha küçük dosyalar üretir. Çok düşük değerlerde bloklu bozulmalar ortaya çıkar.
Benzer kalitede WebP biçimine dönüştürmek çoğu zaman daha da küçük bir sonuç verir. Her ayar için gösterilen Base64 boyutunu izleyin ve hâlâ doğru görünen en küçük sonucu kullanın.
EXIF meta verileri
Fotoğraf makineleri ve telefonlarla çekilen fotoğraflar EXIF meta verileri taşır: kamera modeli, tarih ve saat, bazen de GPS koordinatları. Dönüştürme yapılmazsa Base64 çıktısı, meta veriler dahil orijinal baytları içerir ve kodunu çözen herkes bunları okuyabilir. Dosyanın birebir aynı olması önemliyse, örneğin bir API karma değeri kontrol ediyor veya çekim tarihini okuyorsa, istediğiniz de tam olarak budur.
Dönüştürme, pikselleri tarayıcıda yeniden kodlar ve EXIF verileri aktarılmaz. Çıktı daha küçük olur ve fotoğrafın nerede çekildiğini artık açığa çıkarmaz.
JPEG data URI'si ne zaman kullanmaya değer
Uygun kullanımlar; küçük bulanık yer tutucular (tam boyutlu fotoğraf geç yüklenirken satır içine gömülen, 20 ila 40 piksel genişliğinde bir görsel), JSON yanıtlarındaki küçük resimler ve tek dosyalık HTML dışa aktarımlarıdır. Sayfa başındaki büyük görseller (hero) ve galeriler, tarayıcının önbelleğe alabileceği ayrı dosyalarda durmalıdır.
# Python
import base64
with open('photo.jpg', 'rb') as f:
uri = 'data:image/jpeg;base64,' + base64.b64encode(f.read()).decode('ascii')
Sıkça sorulan sorular
JPG ile JPEG aynı şey mi?
Evet. Daha kısa olan .jpg uzantısı, yalnızca üç karakterlik uzantılara izin veren sistemlerden kalmadır. İkisi de MIME türü image/jpeg olan aynı biçimdir.
Base64 ile kodlama JPEG kalitesini düşürür mü?
Hayır. Base64, dosya baytlarının kayıpsız bir gösterimidir. Kalite yalnızca bir dönüştürme seçerseniz değişir; bu durumda görsel, belirlediğiniz kaliteyle yeniden kodlanır.
Bir JPEG data URI'sinin arka planı saydam olabilir mi?
Base64 dizesi fotoğrafımın konumunu içerir mi?
İçerebilir. Orijinal JPEG'in EXIF meta verilerinde GPS bilgisi varsa ve dosyayı değiştirmeden kodlarsanız konum dizenin içinde yer alır. Görseli dönüştürmek EXIF meta verilerini kaldırır.