struktur BITMAPV5HEADER (wingdi.h)
Struktur BITMAPV5HEADER adalah file header informasi bitmap. Ini adalah versi yang diperluas dari struktur BITMAPINFOHEADER .
Sintaks
typedef struct {
DWORD bV5Size;
LONG bV5Width;
LONG bV5Height;
WORD bV5Planes;
WORD bV5BitCount;
DWORD bV5Compression;
DWORD bV5SizeImage;
LONG bV5XPelsPerMeter;
LONG bV5YPelsPerMeter;
DWORD bV5ClrUsed;
DWORD bV5ClrImportant;
DWORD bV5RedMask;
DWORD bV5GreenMask;
DWORD bV5BlueMask;
DWORD bV5AlphaMask;
DWORD bV5CSType;
CIEXYZTRIPLE bV5Endpoints;
DWORD bV5GammaRed;
DWORD bV5GammaGreen;
DWORD bV5GammaBlue;
DWORD bV5Intent;
DWORD bV5ProfileData;
DWORD bV5ProfileSize;
DWORD bV5Reserved;
} BITMAPV5HEADER, *LPBITMAPV5HEADER, *PBITMAPV5HEADER;
Anggota
bV5Size
Jumlah byte yang diperlukan oleh struktur. Aplikasi harus menggunakan anggota ini untuk menentukan struktur header informasi bitmap mana yang sedang digunakan.
bV5Width
Lebar bitmap, dalam piksel.
Jika bV5Compression BI_JPEG atau BI_PNG, anggota bV5Width menentukan lebar gambar JPEG atau PNG yang didekompresi dalam piksel.
bV5Height
Tinggi bitmap, dalam piksel. Jika nilai bV5Height positif, bitmap adalah DIB atas bawah dan asalnya adalah sudut kiri bawah. Jika nilai bV5Height negatif, bitmap adalah DIB atas ke bawah dan asalnya adalah sudut kiri atas.
Jika bV5Height negatif, menunjukkan DIB atas ke bawah, bV5Compression harus BI_RGB atau BI_BITFIELDS. DIB atas ke bawah tidak dapat dikompresi.
Jika bV5Compression BI_JPEG atau BI_PNG, anggota bV5Height menentukan tinggi gambar JPEG atau PNG yang didekompresi dalam piksel.
bV5Planes
Jumlah bidang untuk perangkat target. Nilai ini harus diatur ke 1.
bV5BitCount
Jumlah bit yang menentukan setiap piksel dan jumlah maksimum warna dalam bitmap.
Anggota ini bisa menjadi salah satu nilai berikut.
Nilai | Makna |
---|---|
0 | Jumlah bit per piksel ditentukan atau disiratkan oleh format file JPEG atau PNG. |
1 | Bitmap adalah monokrom, dan anggota bmiColorsBITMAPINFO berisi dua entri. Setiap bit dalam array bitmap mewakili piksel. Jika bit jelas, piksel ditampilkan dengan warna entri pertama dalam tabel warna bmiColors . Jika bit diatur, piksel memiliki warna entri kedua dalam tabel. |
4 | Bitmap memiliki maksimum 16 warna, dan anggota bmiColorsBITMAPINFO berisi hingga 16 entri. Setiap piksel dalam bitmap diwakili oleh indeks 4-bit ke dalam tabel warna. Misalnya, jika byte pertama dalam bitmap 0x1F, byte mewakili dua piksel. Piksel pertama berisi warna dalam entri tabel kedua, dan piksel kedua berisi warna dalam entri tabel keenam belas. |
8 | Bitmap memiliki maksimum 256 warna, dan anggota bmiColorsBITMAPINFO berisi hingga 256 entri. Dalam hal ini, setiap byte dalam array mewakili satu piksel. |
16 | Bitmap memiliki maksimum 2^16 warna. Jika anggota bV5Compression dari struktur BITMAPV5HEADER BI_RGB, anggota bmiColorsBITMAPINFO adalah NULL. Setiap WORD dalam array bitmap mewakili satu piksel. Intensitas relatif merah, hijau, dan biru diwakili dengan lima bit untuk setiap komponen warna. Nilai untuk biru berada dalam lima bit yang paling signifikan, diikuti oleh lima bit masing-masing untuk hijau dan merah. Bit yang paling signifikan tidak digunakan. Tabel warna bmiColors digunakan untuk mengoptimalkan warna yang digunakan pada perangkat berbasis palet, dan harus berisi jumlah entri yang ditentukan oleh anggota bV5ClrUsed dari BITMAPV5HEADER. Jika anggota bV5Compressiondari BITMAPV5HEADER BI_BITFIELDS, anggota bmiColors berisi tiga masker warna DWORD yang menentukan komponen merah, hijau, dan biru, masing-masing, dari setiap piksel. Setiap WORD dalam array bitmap mewakili satu piksel.
Ketika anggota bV5Compression BI_BITFIELDS, bit yang diatur di setiap masker DWORD harus berdampingan dan tidak boleh tumpang tindih dengan bit masker lain. Semua bit dalam piksel tidak perlu digunakan. |
24 | Bitmap memiliki maksimum 2^24 warna, dan anggota bmiColorsbitMAPINFO adalah NULL. Setiap kembar tiga 3 byte dalam array bitmap mewakili intensitas relatif masing-masing biru, hijau, dan merah, untuk satu piksel. Tabel warna bmiColors digunakan untuk mengoptimalkan warna yang digunakan pada perangkat berbasis palet, dan harus berisi jumlah entri yang ditentukan oleh anggota bV5ClrUsed dari struktur BITMAPV5HEADER . |
32 | Bitmap memiliki maksimum 2^32 warna. Jika anggota bV5Compressiondari BITMAPV5HEADER BI_RGB, anggota bmiColorsBITMAPINFO adalah NULL. Setiap DWORD dalam array bitmap mewakili intensitas relatif biru, hijau, dan merah untuk piksel. Nilai untuk biru berada dalam 8 bit yang paling tidak signifikan, diikuti oleh masing-masing 8 bit untuk hijau dan merah. Byte tinggi di setiap DWORD tidak digunakan. Tabel warna bmiColors digunakan untuk mengoptimalkan warna yang digunakan pada perangkat berbasis palet, dan harus berisi jumlah entri yang ditentukan oleh anggota bV5ClrUsed dari BITMAPV5HEADER. Jika anggota bV5Compressiondari BITMAPV5HEADER BI_BITFIELDS, anggota bmiColors berisi tiga masker warna DWORD yang menentukan komponen merah, hijau, dan biru dari setiap piksel. Setiap DWORD dalam array bitmap mewakili satu piksel. |
bV5Compression
Menentukan bahwa bitmap tidak dikompresi. Anggota bV5RedMask, bV5GreenMask, dan bV5BlueMask menentukan komponen merah, hijau, dan biru dari setiap piksel. Ini berlaku ketika digunakan dengan bitmap 16 dan 32 bpp. Anggota ini bisa menjadi salah satu nilai berikut.
Nilai | Makna |
---|---|
BI_RGB | Format yang tidak dikompresi. |
BI_RLE8 | Format run-length encoded (RLE) untuk bitmap dengan 8 bpp. Format pemadatan adalah format dua byte yang terdiri dari byte hitungan diikuti oleh byte yang berisi indeks warna. Jika bV5Compression BI_RGB dan anggota bV5BitCount adalah 16, 24, atau 32, array bitmap menentukan intensitas aktual biru, hijau, dan merah daripada menggunakan indeks tabel warna. Untuk informasi selengkapnya, lihat Pemadatan Bitmap. |
BI_RLE4 | Format RLE untuk bitmap dengan 4 bpp. Format pemadatan adalah format dua byte yang terdiri dari byte hitungan diikuti oleh dua indeks warna panjang kata. Untuk informasi selengkapnya, lihat Pemadatan Bitmap. |
BI_BITFIELDS | Menentukan bahwa bitmap tidak dikompresi dan bahwa masker warna untuk komponen merah, hijau, dan biru dari setiap piksel ditentukan dalam anggota bV5RedMask, bV5GreenMask, dan bV5BlueMask . Ini berlaku ketika digunakan dengan bitmap 16 dan 32 bpp. |
BI_JPEG | Menentukan bahwa gambar dikompresi menggunakan Format Pertukaran file JPEG. Kompresi JPEG memperdagangkan kompresi terhadap kerugian; itu dapat mencapai rasio kompresi 20:1 dengan sedikit kerugian yang nyata. |
BI_PNG | Menentukan bahwa gambar dikompresi menggunakan Format Pertukaran file PNG. |
bV5SizeImage
Ukuran, dalam byte, gambar. Ini mungkin diatur ke nol untuk bitmap BI_RGB.
Jika bV5Compression BI_JPEG atau BI_PNG, bV5SizeImage adalah ukuran buffer gambar JPEG atau PNG.
bV5XPelsPerMeter
Resolusi horizontal, dalam piksel per meter, dari perangkat target untuk bitmap. Aplikasi dapat menggunakan nilai ini untuk memilih bitmap dari grup sumber daya yang paling cocok dengan karakteristik perangkat saat ini.
bV5YPelsPerMeter
Resolusi vertikal, dalam piksel-per-meter, dari perangkat target untuk bitmap.
bV5ClrUsed
Jumlah indeks warna dalam tabel warna yang benar-benar digunakan oleh bitmap. Jika nilai ini nol, bitmap menggunakan jumlah maksimum warna yang sesuai dengan nilai anggota bV5BitCount untuk mode pemadatan yang ditentukan oleh bV5Compression.
Jika bV5ClrUsed nonzero dan bV5BitCount kurang dari 16, anggota bV5ClrUsed menentukan jumlah warna aktual yang diakses mesin grafis atau driver perangkat. Jika bV5BitCount adalah 16 atau lebih besar, anggota bV5ClrUsed menentukan ukuran tabel warna yang digunakan untuk mengoptimalkan performa palet warna sistem. Jika bV5BitCount sama dengan 16 atau 32, palet warna optimal akan segera dimulai setelah BITMAPV5HEADER. Jika bV5ClrUsed bukan nol, tabel warna digunakan pada perangkat yang dipalsukan, dan bV5ClrUsed menentukan jumlah entri.
bV5ClrImportant
Jumlah indeks warna yang diperlukan untuk menampilkan bitmap. Jika nilai ini nol, semua warna diperlukan.
bV5RedMask
Masker warna yang menentukan komponen merah dari setiap piksel, hanya valid jika bV5Compression diatur ke BI_BITFIELDS.
bV5GreenMask
Masker warna yang menentukan komponen hijau dari setiap piksel, hanya valid jika bV5Compression diatur ke BI_BITFIELDS.
bV5BlueMask
Masker warna yang menentukan komponen biru dari setiap piksel, hanya valid jika bV5Compression diatur ke BI_BITFIELDS.
bV5AlphaMask
Masker warna yang menentukan komponen alfa dari setiap piksel.
bV5CSType
Ruang warna DIB.
Tabel berikut menentukan nilai untuk bV5CSType.
Nilai | Makna |
---|---|
LCS_CALIBRATED_RGB | Nilai ini menyiratkan bahwa titik akhir dan nilai gamma diberikan dalam bidang yang sesuai. |
LCS_sRGB | Menentukan bahwa bitmap berada di ruang warna sRGB. |
LCS_WINDOWS_COLOR_SPACE | Nilai ini menunjukkan bahwa bitmap berada di ruang warna default sistem, sRGB. |
PROFILE_LINKED | Nilai ini menunjukkan bahwa bV5ProfileData menunjuk ke nama file profil yang akan digunakan (nilai gamma dan titik akhir diabaikan). |
PROFILE_EMBEDDED | Nilai ini menunjukkan bahwa bV5ProfileData menunjuk ke buffer memori yang berisi profil yang akan digunakan (nilai gamma dan titik akhir diabaikan). |
Lihat struktur LOGCOLORSPACE untuk informasi yang menentukan ruang warna logis.
bV5Endpoints
Struktur CIEXYZTRIPLE yang menentukan koordinat x, y, dan z dari tiga warna yang sesuai dengan titik akhir merah, hijau, dan biru untuk ruang warna logis yang terkait dengan bitmap. Anggota ini diabaikan kecuali anggota bV5CSType menentukan LCS_CALIBRATED_RGB.
bV5GammaRed
Kurva respons toned untuk merah. Digunakan jika bV5CSType diatur ke LCS_CALIBRATED_RGB. Tentukan dalam format 16.16 tetap yang tidak ditandatangani. 16 bit atas adalah nilai bilangan bulat yang tidak ditandatangani. 16 bit yang lebih rendah adalah bagian pecahan.
bV5GammaGreen
Kurva respons toned untuk hijau. Digunakan jika bV5CSType diatur ke LCS_CALIBRATED_RGB. Tentukan dalam format 16.16 tetap yang tidak ditandatangani. 16 bit atas adalah nilai bilangan bulat yang tidak ditandatangani. 16 bit yang lebih rendah adalah bagian pecahan.
bV5GammaBlue
Kurva respons satu ton untuk biru. Digunakan jika bV5CSType diatur ke LCS_CALIBRATED_RGB. Tentukan dalam format 16.16 tetap yang tidak ditandatangani. 16 bit atas adalah nilai bilangan bulat yang tidak ditandatangani. 16 bit yang lebih rendah adalah bagian pecahan.
bV5Intent
Merender niat untuk bitmap. Ini bisa menjadi salah satu nilai berikut.
Nilai | Niat | Nama ICC | Makna |
---|---|---|---|
LCS_GM_ABS_COLORIMETRIC | Cocok | Colorimetric Absolut | Mempertahankan titik putih. Mencocokkan warna dengan warna terdekatnya di gamut tujuan. |
LCS_GM_BUSINESS | Graphic | Saturasi | Menjaga kejenuhan. Digunakan untuk bagan bisnis dan situasi lain di mana warna yang tidak terkait diperlukan. |
LCS_GM_GRAPHICS | Bukti | Colorimetric Relatif | Mempertahankan kecocokan colorimetric. Digunakan untuk desain grafis dan warna bernama. |
LCS_GM_IMAGES | Gambar | Persepsi | Mempertahankan kontras. Digunakan untuk foto dan gambar alami. |
bV5ProfileData
Offset, dalam byte, dari awal struktur BITMAPV5HEADER hingga awal data profil. Jika profil disematkan, data profil adalah profil aktual, dan profil tersebut ditautkan. (Data profil adalah nama file profil yang dihentikan null.) Ini tidak boleh berupa untai (karakter) Unicode. Ini harus terdiri secara eksklusif karakter dari set karakter Windows (halaman kode 1252). Anggota profil ini diabaikan kecuali anggota bV5CSType menentukan PROFILE_LINKED atau PROFILE_EMBEDDED.
bV5ProfileSize
Ukuran, dalam byte, dari data profil yang disematkan.
bV5Reserved
Anggota ini telah dicadangkan. Nilainya harus diatur ke nol.
Keterangan
Jika bV5Height negatif, menunjukkan DIB atas ke bawah, bV5Compression harus BI_RGB atau BI_BITFIELDS. DIB atas ke bawah tidak dapat dikompresi.
Antarmuka Manajemen Warna Independen (ICM) 2.0 memungkinkan profil warna International Color Consortium (ICC) ditautkan atau disematkan dalam DIB (DIB). Lihat Menggunakan Struktur untuk informasi selengkapnya.
Ketika DIB dimuat ke dalam memori, data profil (jika ada) harus mengikuti tabel warna, dan bV5ProfileData harus memberikan offset data profil dari awal struktur BITMAPV5HEADER . Nilai yang disimpan dalam bV5ProfileData akan berbeda dari nilai yang dikembalikan oleh operator sizeof mengingat argumen BITMAPV5HEADER , karena bV5ProfileData adalah offset dalam byte dari awal struktur BITMAPV5HEADER hingga awal data profil. (Bitmap bit tidak mengikuti tabel warna dalam memori). Aplikasi harus memodifikasi anggota bV5ProfileData setelah memuat DIB ke dalam memori.
Untuk DIB yang dikemas, data profil harus mengikuti bitmap bitmap yang mirip dengan format file. Anggota bV5ProfileData masih harus memberikan offset data profil dari awal BITMAPV5HEADER.
Aplikasi harus mengakses data profil hanya ketika bV5Size sama dengan ukuran BITMAPV5HEADER dan bV5CSType sama dengan PROFILE_EMBEDDED atau PROFILE_LINKED.
Jika profil ditautkan, jalur profil dapat menjadi nama yang sepenuhnya memenuhi syarat (termasuk jalur jaringan) yang dapat dibuka menggunakan fungsi CreateFile .
Persyaratan
Klien minimum yang didukung | Windows 2000 Professional [hanya aplikasi desktop] |
Server minimum yang didukung | Windows 2000 Server [hanya aplikasi desktop] |
Header | wingdi.h (sertakan Windows.h) |