Vlákno názorů k článku Grafický formát BMP - používaný a přitom neoblíbený od K2 - Několik poznámek: Windows interně používají DDB (Device Dependent...

  • Článek je starý, nové názory již nelze přidávat.
  • 22. 10. 2006 1:44

    K2 (neregistrovaný)
    Několik poznámek: Windows interně používají DDB (Device Dependent Bitmap) a DIB (Device Independent Bitmap). Driver zařízení raději pracuje s DDB (drasticky zjednodušeno). DDB je hlavička obsahující rozměry bitmapy, velikost, šíře v bytech (dělitelná dvěmi, protože alignment), a vlastní obrázek v barvách vlastních danému zařízení (třeba 1-bit barva, 24-bit barva). DDB je tedy svázán se zařízením, pro které je určen. DIB je naopak nezávislý, a lze ho rastrovat na jakémkoliv zařízení (dekomprimovat, převést paletu, aplikovat barevné profily atd.). DIB může ukládat data ve formátu bottom-up (OS/2 style) i top-down. DIB umí i transparency a alpha channel.
    BMP je DIB uložený na disk. Toto lze udělat přímo z API, a není k tomu třeba znalosti formátu BMP/DIB. Výhodou BMP je hlavně rychlý překlad na DDB, rychlé zobrazení. Vzhledem k roku vzniku a jeho účelu nemá smysl jej srovnávat s GIF, PNG apod. Srovnání je možné řekněme s formáty XBM, XPM a TGA.

    Položky palety jsou zřejmě 4-bytové kvůli alignmentu - na některých platformách (třeba Alpha) nelze adresovat byte, který neleží na adrese dělitelné dvěma. Ale vyjma typu tagRGBQUAD existuje i tagRGBTRIPLE, který má opravdu jen RGB (fyzicky BGR). Oboje je deklarováno ve Wingdi.h, není třeba si pamatovat pořadí barev :)
  • 22. 10. 2006 22:41

    Pavel Tišnovský (neregistrovaný)
    Pravda, díky za upřesnění DIB/DDB. DDB jsem se v článku nezabýval, v kontextu grafických formátů to IMHO nemá smysl (DDB se většinou na disk neukládá, právě kvůli tomu D-dependent, na ukládání se jedná o málo trvalou informaci).

    Porovnávat BMP s GIF a PNG (i JPEG apod.) smysl samozřejmě má, protože ho někteří uživatelé používají pro obdobnou činnost - prezentaci obrázků na Webu (ehm...), ukládání "svých" grafických výtvorů apod.

    Opravdu je překlad DIB (BMP) na DDB tak rychlý? No neřekl bych, je prakticky stejně rychlý, jako z kteréhokoli jiného formátu, pokud tedy už bitmapa není uložena v paměti. A v případě velkých obrázků je spíše rychlejší konverze z něčeho komprimovaného (i když BMP může "zakontejnerovat" třeba i JFIF).