BMP (Bitmap) Nedir, Ne İşe Yarar?

Hızlı Bakış

BMP formatı, görüntüyü piksel piksel saklayan en yalın ve sıkıştırılmamış bir dosya türüdür. Bu yapı, her pikselin renk bilgisini doğrudan kaydediyor. 24 bit derinlikte mavi, yeşil ve kırmızı kanallar için üç bayt ayırıyor. 8 bitlik modda ise bir renk paleti kullanıyor. Görüntü verisi, sol alttan başlayarak satır satır işleniyor. Bu sayede Windows uygulamaları, grafik verisini hiçbir kalite kaybı olmadan anında okuyup yazıyor.

BMP (Bitmap), Microsoft ve IBM tarafından birlikte geliştirilen en basit bir görüntü dosya formatıdır. Bu dosya formatı özellikle Windows ve OS/2 platformlarında yaygın kullanılır.

BMP Formatı Nedir?

BMP Dosya Formatı Nedir?

BMP dosyası, renkleri gerçek renkler olarak veya dizinlenmiş bir palet kullanarak oluşturulan bir nokta tablosu olarak depolanan piksellere sahip bir bitmap dosyası/grafik görüntü dosyasıdır.

BMP, RGB, Dizine Alınmış Renk, Gri Tonlama ve Bitmap renk modlarını destekler. Dolayısıyla, bir görüntüde Windows veya OS/2 formatını ve kanal başına 32 bitlik bir bit derinliği ayarlanabilir.

Windows formatını kullanan 4 bitlik ve 8 bitlik görüntüler için, ayrıca RLE sıkıştırması yapılandırabilirsiniz.

Bu görüntü formatı, çevresel görüntü cihazından bağımsız bir bitmap elde etmemize izin verecek şekilde tasarlanmıştır. Bitmap’in yapısı dosya başlığı, bilgi başlığı, palet ve resim gövdesinden oluşur.

BMP Dosya Başlığı

Dosya başlığı, dosya türü ve boyutu hakkında ve ayrıca görüntü bilgilerinin gerçekte nerede başladığı hakkında bilgi sağlar ve dört bölümden oluşur.

  1. İmza, iki karakterli bir BMP dosyası olduğunu belirtir.
  2. Onaltılık BM, 424D, bunun bir OS/2 bitmap veya CI olduğunu belirten ve bunun bir OS/2 renk simgesi olduğunu veya CP, OS/2 renkli bir işaretçi olduğunu veya IC, bunun bir OS/2 simgesi olduğunu veya PT bunun bir OS/2 işaretçisi olduğunu belirtir.
  3. 4 baytlık bir ayrılmış bir alana sahiptir.
  4. 4 baytlık görüntü ofsetine sahiptir. Bu dosyanın başlangıcına göre görüntü bilgilerinin konumunu ayarlar.

BMP Bilgi Başlığı

Bilgi başlığı, görüntü hakkında, özellikle boyutları ve renkleri hakkında bilgi içerir. Bilgi başlığının bayt cinsinden boyutu 4’tür.

Görüntünün genişliği ve yüksekliği 4 bayttır ve düzlemin boyutu 2 bayttır. Renk modelinin derinliği, yani rengi kodlamak için kullanılan bit sayısıdır. Bu değer 1, 4, 8, 16, 24 veya 32’ye eşdeğer olabilir.

Sıkıştırma yöntemi olarak 4 baytlık bir boyut içerir. Bu değer, görüntü sıkıştırılmadığında 0 veya kullanılan sıkıştırma türüne bağlı olarak 1, 2 veya 3’tür.

RLE için 1 piksel kodlama başına 8 bit, RLE için 2 piksel kodlama başına 4 bit, bit alanı kodlaması için 3, yani rengin palet tarafından temsil edilen üçlü bir maske ile kodlandığı anlamına gelir.

Resmin bayt cinsinden toplam boyutu 4 bayttır. Yatay ve dikey çözünürlük metre başına piksel sayısı 4 bayttır.

Paletteki önemli renklerin sayısı 4 bayttır. Tüm renkler önemli olduğunda bu alan 0’a eşit olabilir.

Görüntü Paleti

Görüntü paleti isteğe bağlıdır. Palet tanımlandığında, girişlerin her biri için art arda 4 bayt içerir ve mavi bileşen, yeşil bileşen, kırmızı bileşen ve ayrılmış bir alan içerir.

Görüntü Kodlama

Görüntü kodlama, sol alt pikselden başlayarak her piksele karşılık gelen bitler satır satır yazılarak yapılır.

2 renkli görüntüler piksel başına 1 bit kullanır, yani bir bayt 8 pikseli kodlar. 16 renkli görüntüler piksel başına 4 bit kullanır, bu, bir baytın 2 pikseli kodladığı anlamına gelir.

256 renkli görüntüler piksel başına 8 bit kullanır ve her pikseli kodlamak için bir bayt gerekir.

Gerçek renkli görüntüler piksel başına 24 bit kullanır, bu da her pikseli kodlamak için mavi, yeşil ve kırmızı için değişen renk sırasına göre 3 bayta ihtiyaç duyar.

Görüntüdeki her satır, 4’ün katı olan toplam bayt sayısı içerir. Bu şema karşılanmazsa, satır bilgilerini karşılamak için gerekli tüm 0’larla tamamlanmalıdır.

Bitmap Dosyalarının Teknik Derinlikleri Hakkında SSS

Bir dosyanın sıradan bir resim değil de gerçek bir BMP olduğunu içine bakmadan nasıl anlayabilirim?

Dosyanın en başındaki imzaya bakman yeterli. Hex editörüyle açtığında ilk iki baytta ‘BM’ harflerini görürsen doğru yerdesin. Hemen arkadan gelen ayrılmış alan ve ofset bilgisi konumlanır.
Piksel verilerinin haritası bu ofsetle başlar. Bu sihirli sayılar olmadan işletim sistemi dosyayı tanıyamaz.
Yazılımlar, grafikleri belleğe alırken bu imzaya göre pozisyonlanır. Bu imza eksikse veya bozuksa dosya açılmaz.

Bilgi başlığı neden bu kadar önemli ve olmazsa olmaz detaylar hangileri?

Bilgi başlığı görüntünün anatomisini çıkarır. Genişlik, yükseklik ve piksel derinliği burada yazar. Piksel derinliği 1, 4, 8, 16, 24 veya 32 bit olabilir.
Sıkıştırma yöntemi de hemen bu bloktadır. Görüntü sıkıştırılmadıysa bu değer 0 olarak belirir. RLE kodlaması için 1 veya 2 değerleri kullanılır.
Bu alanı yanlış okursan ekranda anlamsız renk cümbüşleri görürsün. Bu satırlar olmadan görüntüyü doğru çözmek imkansızdır.

Bu görüntü formatında renk paleti gerçekten şart mı yoksa her zaman es geçebilir miyim?

Palet, renk derinliği 8 bit ve altı olan dosyalar için hayati önemdedir. Her bir palet girişi mavi, yeşil, kırmızı ve bir ayrılmış alan olmak üzere 4 bayt tutar.
Görüntüdeki pikseller, bu tablodaki renklerin sıra numarasını taşır. Zira paleti olmayan indekslenmiş bir resim tamamen siyah görünür.
Buna karşın, 24 bitlik gerçek renkli görüntüler palete ihtiyaç duymaz. Her piksel doğrudan RGB bileşenlerini kodlar. Bu performansı ciddi seviyede artırır.

Gerçek renkli bir bitmap'in piksel kodlaması neden tersten başlıyor gibi hissediliyor?

Görüntü kodlamada matematiksel bir başlangıç noktası seçilmiştir. Veriler sol alt köşedeki pikselden başlar ve satır satır yukarıya doğru ilerler. Bellek düzeni bu yönde optimize edilmiştir.
Her satırın sonuna hizalama için sıfırlar eklenir. Toplam bayt sayısı her satırda 4’ün katı olmak zorundadır.
Açıkçası, bu ters akış ilk bakışta kafa karıştırıcıdır. Ancak DIB yapısı sayesinde cihazdan bağımsız bir render altyapısı sunar. İşin püf noktası satır baytlarını doğru matematikle yorumlamaktır.

Sıkıştırma tarafında hangi seçeneklere sahibiz ve bunlar kaliteyi nasıl etkiliyor?

Sıkıştırma yöntemi olarak 4 baytlık bir alan ayrılmıştır. Sıkıştırma yoksa bu değer 0 olarak kalır. RLE yöntemi 4 bit ve 8 bit görüntüler için birebirdir.
RLE, aynı rengin yan yana tekrar ettiği durumlarda alan tasarrufu sağlar. Fakat bu yöntem karmaşık fotoğraflarda dosyayı şişirebilir.
Bit alanı kodlaması için ise değer 3 olarak ayarlanır. Bu modda kanal başına 32 bitlik derinlik kullanarak renk maskeleriyle oynarsın. Kayıpsız kaliteyi korumak için sıkıştırmasız seçenek hala en saf yöntemdir.

Modern dünyada bu eski format neden hala gömülü sistemlerin vazgeçilmezi olarak kalıyor?

Bu formatın en büyük silahı ham ve yalın piksel verisidir. Çözmek için karmaşık kütüphanelere veya patentli kod çözücülere ihtiyaç duymazsın. Sadece başlık bilgisini okuyup veriyi ekrana basarsın.
Kaynaksız mikrodenetleyiciler ve düşük seviyeli uygulamalar için bu ham erişim altın değerindedir. Kanal başına bit derinliği ayarları çok hassas işler yapmanı sağlar.
Gri tonlama ve dizinlenmiş renk modları çok az bellek tüketir. Netice itibarıyla, basitlik arayan her donanım mühendisi bu yapıya güvenir. Bu sadelik, yıllara meydan okuyan bir standart yaratır.

Bu Rehberi Keşfettikleri İçin Sana Teşekkür Edecekler!

Sadece bir tıkla sevdiklerine dev bir iyilik yapmaya hazır mısın? Bilgi paylaştıkça devleşir.

İlk yorumu sen paylaş