Untuk mencari saiz imej tanpa mampatan, darabkan bilangan piksel dengan bilangan bit yang digunakan oleh setiap piksel: saiz dalam bit = lebar × tinggi × kedalaman warna. Ini muncul apabila soalan memberi resolusi dan kedalaman warna, kemudian bertanya berapa storan yang diperlukan.
Ia dibina terus atas kedalaman bit daripada modul sebelumnya dan ialah pelajaran pertama dalam imej, bunyi dan storan.
Mengapa jawapan memerlukan andaian?
Imej bitmap ialah grid piksel, dan setiap piksel menyimpan satu warna sebagai nombor binari. Bilangan bit setiap piksel ialah kedalaman warna (colour depth). Lebih banyak bit membenarkan lebih banyak warna, tetapi imej memerlukan lebih banyak storan.
Formula hanya memberi saiz data piksel. Fail sebenar juga menyimpan lebar, tinggi dan butiran lain, dan mungkin dimampatkan. Jadi tulis andaian anda, contohnya “andaikan tiada pemampatan dan abaikan metadata fail”.
Bagaimana mengira langkah demi langkah?
- Cari bilangan piksel: lebar × tinggi.
- Cari bit setiap piksel. Jika diberi bilangan warna, cari kedalaman bit terkecil yang cukup (2bit ≥ warna).
- Darab: piksel × bit setiap piksel memberi saiz dalam bit.
- Tukar: bahagi dengan 8 untuk bait, kemudian gunakan konvensyen yang dinyatakan untuk unit lebih besar (lihat menukar unit storan).
- Nyatakan andaian dan tulis unit.
Kaedah yang sama sebagai pseudokod gaya Cambridge:
INPUT Width, Height, Depth
Bits ← Width * Height * Depth
Bytes ← Bits / 8
OUTPUT Bytes
Jejak dengan Width = 800, Height = 600, Depth = 8: Bits = 800 × 600 × 8 = 3 840 000, jadi Bytes = 480 000.
Contoh berlangkah
Sebuah foto lebarnya 1 024 piksel dan tingginya 768 piksel dengan kedalaman warna 24 bit. Beri saiz tanpa mampatan dalam bait dan KiB (1 KiB = 1 024 bait).
Langkah 1, piksel: 1 024 × 768 = 786 432.
Langkah 2, bit: 786 432 × 24 = 18 874 368 bit.
Langkah 3, bait: 18 874 368 ÷ 8 = 2 359 296 bait.
Langkah 4, KiB: 2 359 296 ÷ 1 024 = 2 304 KiB (iaitu 2.25 MiB).
Semakan melalui laluan lain: 24 bit ialah 3 bait, jadi 786 432 × 3 = 2 359 296 bait. Kedua-dua laluan sama.
Andaian: tiada pemampatan dan tiada metadata, jadi fail sebenar sedikit lebih besar atau, jika dimampatkan, jauh lebih kecil.
Kesilapan yang perlu diawasi
Kesilapan lazim ialah menggunakan bilangan warna sebagai kedalaman bit.
Jawapan salah: Imej 640 × 480 dengan 256 warna. Saiz = 640 × 480 × 256 = 78 643 200 bit.
Pelajar menggunakan 256 di tempat yang memerlukan bilangan bit.
Pembetulan: 256 warna memerlukan 8 bit, kerana 28 = 256. Jadi saiz = 640 × 480 × 8 = 2 457 600 bit = 307 200 bait. Jawapan salah itu 32 kali terlalu besar, dan semakan kemunasabahan yang cepat akan mendedahkannya.
Semak kendiri
Tunjukkan setiap langkah, kemudian buka setiap jawapan.
1. Sebuah imej lebarnya 100 piksel dan tingginya 50 piksel dengan kedalaman warna 4 bit. Berapa bait diperlukan?
Tunjukkan jawapan
Piksel = 100 × 50 = 5 000. Bit = 5 000 × 4 = 20 000. Bait = 20 000 ÷ 8 = 2 500 bait.
2. Sebuah imej 640 × 480 piksel menggunakan 16 warna. Beri saiz tanpa mampatan dalam KiB.
Tunjukkan jawapan
16 warna memerlukan 4 bit (24 = 16). Piksel = 640 × 480 = 307 200. Bit = 307 200 × 4 = 1 228 800. Bait = 153 600. KiB = 153 600 ÷ 1 024 = 150 KiB.
3. Sebuah imej hitam putih berukuran 8 × 8 piksel. Berapa bait diperlukan, dan apakah kedalaman bit yang anda andaikan?
Tunjukkan jawapan
Dua warna memerlukan 1 bit setiap piksel. Bit = 8 × 8 × 1 = 64. Bait = 64 ÷ 8 = 8 bait, dengan andaian kedalaman warna 1 bit dan tiada metadata.
Seterusnya
Bunyi disimpan dengan penaakulan yang serupa, jadi teruskan dengan mengira saiz audio bersampel. Apabila anda boleh melakukan kedua-duanya tanpa teragak-agak, uji dalam set latihan. Kotak pasir penaakulan Python ialah tempat yang baik untuk menukar formula kepada kod dan menyemak aritmetik anda.
Sesetengah pelajar mengikuti setiap langkah di sini tetapi kehilangan markah kerana lupa menyatakan andaian atau membahagi dengan 8. Guru boleh mengesan kesilapan sebegini dalam kerja anda melalui tuisyen Computer Science dalam talian satu dengan satu.