ΠΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ
Π΄Π°Π½Π½ΡΡ
.
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΡΠΌΠ°ΡΠΎΠ².
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ
ΡΡΡΠ΅ΠΊΡΠΎΠ²
ΠΠ°Π½Π½ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π·Π°ΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π² ΡΠ°ΠΉΠ»Π΅ TGA, ΠΎΠ±ΡΡΠ½ΠΎ Π½Π΅ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ (Π½Π΅ ΠΊΠΎΠ΄ΠΈΡΡΡΡΡΡ). ΠΠΎ ΡΡΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅ ΡΠ°ΠΉΠ»Ρ TGA, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, Π²Π΅ΡΡΠΌΠ° Π³ΡΠΎΠΌΠΎΠ·Π΄ΠΊΠΈ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π΅ΡΠ»ΠΈ ΡΠ°ΡΡΡΠΎΠ²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠΌΠ΅ΡΡ Π³Π»ΡΠ±ΠΈΠ½Ρ 24 ΠΈΠ»ΠΈ 32 Π±ΠΈΡΠ°. ΠΠ° ΡΡΠΎΡ ΡΠ»ΡΡΠ°ΠΉ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ TGA ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Π° ΠΏΡΠΎΡΡΠ°Ρ, Π½ΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Π°Ρ ΡΡ Π΅ΠΌΠ° ΡΠΆΠ°ΡΠΈΡ RLE. ΠΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΆΠ°ΡΠΎ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° RLE. Π ΡΠΆΠ°ΡΠΎΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ Π² ΠΎΠ±ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
ΠΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ Π΄Π°Π½Π½ΡΡ . ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΡΠΌΠ°ΡΠΎΠ². ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΡΡΠ΅ΠΊΡΠΎΠ² (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
- ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
- 1 ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΎΡΠΌΠ°ΡΠΎΠ² ΡΠ°ΠΉΠ»Π°
- 1.1 Π€ΠΎΡΠΌΠ°Ρ TGA
- 1.1.1 Π‘ΡΡΡΠΊΡΡΡΠ°
- 1.1.3 Π¦Π²Π΅ΡΠΎΠ²Π°Ρ ΡΠ°Π±Π»ΠΈΡΠ°
- 1.1.4 ΠΠ°Π½Π½ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
- 1.2 Π€ΠΎΡΠΌΠ°Ρ BMP
- 1.2.1 ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ BMP
- 1.2.2 ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°
- 1.2.3 ΠΠ°Π»ΠΈΡΡΠ° BMP
- 1.2.4 ΠΠ°Π½Π½ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ BMP
- 2 ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ°ΠΉΠ»Π°
- 2.1 ΠΡΠΊΡΡΡΠΈΠ΅ ΡΠ°ΠΉΠ»Π° TGAΠ‘Ρ Π΅ΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΎΡΠΊΡΡΡΠΈΠ΅ ΡΠ°ΠΉΠ»Π° ΡΠΎΡΠΌΠ°ΡΠ° TGA ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΎ Π½Π° ΡΠΈΡ. 2.1.
- 2.2 ΠΡΠΊΡΡΡΠΈΠ΅ ΡΠ°ΠΉΠ»Π° BMP
- 2.3 ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
- 3. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΡΠ΅ΠΊΡΠΎΠ²
- 3.1 ΠΠ°ΡΡΠΌΠ»Π΅Π½ΠΈΠ΅ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠ΅ΠΉ B
- 3.2 ΠΠ°ΡΡΠΌΠ»Π΅Π½ΠΈΠ΅ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠ΅ΠΉ S
- 3.3 Π€ΠΈΠ»ΡΡΡΠ°ΡΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
- 4. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΡΠΎΡΠΌΠ°ΡΠ°ΠΌΠΈ
- 4.1 ΠΡΠ±ΠΎΡ ΡΡΠ΅Π΄ΡΡΠ² Π΄Π»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
- 4.2 Π‘ΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ
- 4.3 ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ, ΠΈΡ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅
- 4.4 ΠΠ΅ΡΠ΅ΡΠ΅Π½Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ Π² ΠΌΠΎΠ΄ΡΠ»ΡΡ
- 5. Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
- ΠΡΠ²ΠΎΠ΄Ρ
- ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
Π ΡΠΈΡΠΎΠΊΠΎΠΌ ΡΠΌΡΡΠ»Π΅, ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ — ΡΡΠΎ Π»ΡΠ±Π°Ρ ΡΠΎΡΠΌΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ Π²Ρ ΠΎΠ΄ΠΎΠΌ ΡΠ²Π»ΡΡΡΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΈ ΠΈΠ»ΠΈ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Π΄ΡΡ. ΠΠΎΡΡΠΎΠΌΡ ΡΠ΅ΡΠΌΠΈΠ½ «Π Π΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ» ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΡΠ½ΡΠΌ ΡΠ»ΡΡΠ°Π΅ΠΌ ΡΠ΅ΡΠΌΠΈΠ½Π° «ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ». Π Π΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ — ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ (Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ, Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ, ΡΠΈΡΡΠΎΠ²ΡΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ).
Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Π²ΡΠ²ΠΎΠ΄Π° (ΠΌΠΎΠ½ΠΈΡΠΎΡ, ΠΏΡΠΈΠ½ΡΠ΅Ρ, ΠΎΡΡΠ΅ΡΠ½Π°Ρ ΠΏΠ΅ΡΠ°ΡΠ½Π°Ρ ΠΌΠ°ΡΠΈΠ½Π° ΠΈ Ρ. Π΄.) Π΅ΡΡΡ ΡΠ²ΠΎΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΎ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΌΡ ΠΎΡ Π²Π°ΡΡ (Π½Π΅ Π»ΡΠ±ΠΎΠΉ ΡΠ²Π΅Ρ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π° Π±ΡΠΌΠ°Π³Π΅ ΡΠΎΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠ²Π΅ΡΠ»ΠΎΡΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Π±Π΅Π»ΡΠΌ ΠΈ ΡΡΡΠ½ΡΠΌ Π΄ΠΎΡΡΠΈΠ³Π°Π΅Ρ 40, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ Ρ ΡΠ»Π°ΠΉΠ΄Π° ΠΎΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ 200. ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π·Π°ΠΌΡΡΠ΅Π» Π°Π²ΡΠΎΡΠ° Ρ Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠΈΠΌΠΈ ΠΏΠΎΡΠ΅ΡΡΠΌΠΈ. ΠΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠ²Π΅ΡΠΎΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ — ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΡΠ°ΡΠΊΠΈ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ²Π΅ΡΠ°. Π‘ΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡ, ΠΏΠΎΠ΄Π³ΠΎΡΠ°Π²Π»ΠΈΠ²Π°Ρ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΈ ΠΊ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ Π² ΠΏΠ΅ΡΠ°ΡΠΈ, Π½Π° ΡΠ΅Π»Π΅Π²ΠΈΠ΄Π΅Π½ΠΈΠΈ, Π² ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅, Π΄Π΅ΠΉΡΡΠ²ΡΡ ΡΠ²ΠΎΡΡΠ΅ΡΠΊΠΈ, ΠΊΠ°ΠΊ Ρ ΡΠ΄ΠΎΠΆΠ½ΠΈΠΊ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊ Π²ΠΈΠ΄Ρ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΌΡ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌ ΡΠ΅ΠΏΡΠΎΠ΄ΡΡΠΈΡΡΡΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°.
Π‘Π΅Π³ΠΎΠ΄Π½Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²ΡΡ ΠΈ ΡΠΈΡΡΠΎΠ²ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡΡ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ ΡΠ°ΡΡΡΠΎΠ²ΡΠΌΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ°ΠΌΠΈ Π² ΡΠΈΡΡΠΎΠ²ΠΎΠΌ Π²ΠΈΠ΄Π΅. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° ΠΈ ΠΏΡΠΎΡΡΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΡΠ°ΡΡΠΎ ΠΏΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΡΠΈΡΡΠΎΠ²ΡΠΌΠΈ ΡΠΎΡΠΎΠ°ΠΏΠΏΠ°ΡΠ°ΡΠ°ΠΌΠΈ. ΠΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΠΈ ΠΌΠΎΡΠ½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ (Adobe Photoshop, Corel PHOTO-PAINT, Paint Shop Pro, Microsoft Picture It!, Visualizer Photo Studio, Pixel image editor, PixBuilder Photo Editor, Fo2Pix ArtMaster, GIMP ΠΈ ΠΏΡ.) Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΈΠΎΠ±ΡΠ΅ΡΠ°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ. Π‘ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΡ Π½Π΅ Π»ΠΈΡΠ΅Π½Ρ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΎΠ², ΠΎΠ΄Π½Π°ΠΊΠΎ Π³ΡΠ°ΠΌΠΎΡΠ½ΠΎΠ΅ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ΅ΡΠΈΡΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Π·Π°Π΄Π°Ρ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠΈΡ ΠΏΡΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ. ΠΠ½ΠΈ ΠΌΠΎΠ³ΡΡ, Π² ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ, ΠΈΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π΄Π΅ΡΠ΅ΠΊΡΡ, Π΄ΠΎΠΏΡΡΠ΅Π½Π½ΡΠ΅ ΠΏΡΠΈ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ ΡΠΎΡΠΎΡΡΠ΅ΠΌΠΊΠΈ.
1. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΎΡΠΌΠ°ΡΠΎΠ² ΡΠ°ΠΉΠ»Π°
Π Π΄Π°Π½Π½ΠΎΠΉ ΠΊΡΡΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΡΠ°Π±ΠΎΡΠ° Ρ Π΄Π²ΡΠΌΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΡΠΎΡΠΌΠ°ΡΠ°ΠΌΠΈ — TGA ΠΈ BMP. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· Π½ΠΈΡ .
1.1 Π€ΠΎΡΠΌΠ°Ρ TGA
1.1.1 Π‘ΡΡΡΠΊΡΡΡΠ°
ΠΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ ΡΠΎΡΠΌΠ°ΡΠ° TGA ΠΈΠΌΠ΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΡΡΡΠΊΡΡΡΡ:
Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ;
Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΏΠΎΠ»Π΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ;
Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½Π°Ρ ΡΠ²Π΅ΡΠΎΠ²Π°Ρ ΡΠ°Π±Π»ΠΈΡΠ°;
ΡΠ°ΡΡΡΠΎΠ²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΊΠ°ΠΆΠ΄ΡΡ ΡΠ°ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ.
1.1.2 ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ
ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΡΠ°ΠΉΠ»Π° ΡΠΎΡΠΌΠ°ΡΠ° TGA ΠΈΠΌΠ΅Π΅Ρ ΡΡΡΡΠΊΡΡΡΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΡ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ 1.1.
ΠΠΎΠ»Π΅ IDLength — ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΠΎΠ»Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΈΠ΄Π΅Ρ ΡΡΠ°Π·Ρ Π·Π° Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ. Π ΡΠ»ΡΡΠ°Π΅ Π΅ΡΠ»ΠΈ ΡΡΠΎ ΠΏΠΎΠ»Π΅ ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π²Π½ΠΎΠ΅ 0, ΡΠΎ ΠΎΠ±Π»Π°ΡΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΡΠ°ΠΉΠ»Π΅ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ.
ColorMapType — ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ. ΠΡΠ»ΠΈ ΡΡΠΎ ΠΏΠΎΠ»Π΅ ΡΠ°Π²Π½ΠΎ 1 — ΡΠ°Π±Π»ΠΈΡΠ° Π΅ΡΡΡ, 0 — Π½Π΅Ρ, Π΅ΡΠ»ΠΈ Π»Π΅ΠΆΠΈΡ Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ ΠΎΡ 2 Π΄ΠΎ 255 — ΡΠ°Π±Π»ΠΈΡΠ° Π΅ΡΡΡ, Π½ΠΎ ΡΠΎΡΠΌΠ°Ρ Π΅Π΅ ΠΏΠΎΠ½ΡΡΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅, ΡΠΎΠ·Π΄Π°Π²ΡΠ΅ΠΉ ΡΠ°ΠΉΠ».
Π’Π°Π±Π»ΠΈΡΠ° 1.1 — Π‘ΡΡΡΠΊΡΡΡΠ° Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΡΠ°ΠΉΠ»Π° TGA
ΠΠΎΠ»Π΅ | Π Π°Π·ΠΌΠ΅Ρ, Π±Π°ΠΉΡ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ | |
IDLength | Π Π°Π·ΠΌΠ΅Ρ ΠΏΠΎΠ»Ρ ID-ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ | ||
ColorMapType | Π’ΠΈΠΏ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ | ||
ImageType | ΠΠΎΠ΄ ΡΠΈΠΏΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ | ||
CmapStart | ΠΠ°ΡΠ°Π»ΠΎ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ | ||
CmapLength | ΠΠ»ΠΈΠ½Π° ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ | ||
CmapDepth | ΠΠ»ΡΠ±ΠΈΠ½Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ | ||
Xoffset | ΠΠ°ΡΠ°Π»ΡΠ½Π°Ρ Π₯-ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ | ||
Yoffset | ΠΠ°ΡΠ°Π»ΡΠ½Π°Ρ Y-ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ | ||
Width | Π¨ΠΈΡΠΈΠ½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ | ||
Height | ΠΡΡΠΎΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ | ||
PixelDepth | ΠΠ»ΡΠ±ΠΈΠ½Π° ΠΏΠΈΠΊΡΠ΅Π»Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ | ||
ImageDescriptor | ΠΠ°ΠΉΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ | ||
ΠΠΎΠ»Π΅ ImageType ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΈΠΏ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π³ΠΎΡΡ Π² ΡΠ°ΠΉΠ»Π΅. Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠ΅ΠΌΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΈΠΏΠΎΠ², ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΎ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ 1.2.
Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΠΈ ΠΏΠΎΠ»Ρ (CMapStart, CMapLength ΠΈ CMapDepth) ΡΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ. Π‘ΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ°ΡΡΡ Π² Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΈ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅ΠΉ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. ΠΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Ρ ColorMapType ΡΠ°Π²Π½ΠΎ 0, ΡΠΎ ΠΈ ΡΡΠΈ ΠΏΠΎΠ»Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠΌΠ΅ΡΡ Π½ΡΠ»Π΅Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
ΠΠΎΠ»Π΅ CMapStart ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ. Π₯ΠΎΡΡ Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠ°Π±Π»ΠΈΡΡ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π² Π»ΡΠ±ΠΎΠΌ Π΅Π΅ ΠΌΠ΅ΡΡΠ΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, 16-ΡΠ²Π΅ΡΠ½ΡΠ΅ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π·Π°ΠΏΠΈΡΠ°Π½Ρ Π² 64-ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΠΎΠΉ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅, Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° 31, Π° Π½Π΅ Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° 0).
Π’Π°Π±Π»ΠΈΡΠ° 1.2 — Π’ΠΈΠΏΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ | Π’ΠΈΠΏ Π΄Π°Π½Π½ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ | Π¦Π²Π΅ΡΠΎΠ²Π°Ρ ΡΠ°Π±Π»ΠΈΡΠ° | ΠΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ | |
Π ΡΠ°ΠΉΠ»Π΅ Π½Π΅Ρ Π΄Π°Π½Π½ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ | ΠΠ΅Ρ | ΠΠ΅Ρ | ||
ΠΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Ρ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅ΠΉ | ΠΡΡΡ | ΠΠ΅Ρ | ||
Truecolor-ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ | ΠΠ΅Ρ | ΠΠ΅Ρ | ||
ΠΠΎΠ½ΠΎΡ ΡΠΎΠΌΠ½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ | ΠΠ΅Ρ | ΠΠ΅Ρ | ||
ΠΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Ρ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅ΠΉ | ΠΡΡΡ | ΠΡΡΡ | ||
Truecolor-ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ | ΠΠ΅Ρ | ΠΡΡΡ | ||
ΠΠΎΠ½ΠΎΡ ΡΠΎΠΌΠ½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ | ΠΠ΅Ρ | ΠΡΡΡ | ||
ΠΠΎΠ»Π΅ CMapLength Ρ ΡΠ°Π½ΠΈΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅. ΠΡΠ»ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ 57 ΡΠ²Π΅ΡΠΎΠ², ΡΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠΎ ΠΏΠΎΠ»Π΅, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡΡΠΎΠΈΡΡ 57-ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΡΡ ΡΠ°Π±Π»ΠΈΡΡ.
ΠΠΎΠ»Π΅ CMapDepth ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±ΠΈΡΠΎΠ² Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ΅ ΡΠ°Π±Π»ΠΈΡΡ. ΠΠ±ΡΡΠ½ΠΎ ΠΎΠ½ΠΎ ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ 15, 16, 24 ΠΈΠ»ΠΈ 32.
ImageDesc — ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. ΠΠ΅ΡΠ΅Ρ Π² ΡΠ΅Π±Π΅ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ:
7−6 Π±ΠΈΡΡ — ΡΠ΅Π·Π΅ΡΠ², Π²ΡΠ΅Π³Π΄Π° 0;
4−5 Π±ΠΈΡΡ — ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΡ Π½Π°ΡΠ°Π»Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. ΠΡΠ»ΠΈ ΠΎΠ±Π° Π±ΠΈΡΠ° ΡΠ°Π²Π½Ρ 0, ΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Π² Π»Π΅Π²ΠΎΠΌ Π½ΠΈΠΆΠ½Π΅ΠΌ ΡΠ³Π»Ρ;
0−3 Π±ΠΈΡΡ — ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±ΠΈΡΠΎΠ² Π°ΡΡΠΈΠ±ΡΡΠΎΠ² Π² ΠΏΠΈΠΊΡΠ΅Π»Π΅ (Π°Π»ΡΡΠ°-ΠΊΠ°Π½Π°Π», ΠΎΠ²Π΅ΡΠ»Π΅ΠΉΠ½ΡΠ΅ Π±ΠΈΡΡ ΠΈ Π±ΠΈΡΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ).
1.1.3 Π¦Π²Π΅ΡΠΎΠ²Π°Ρ ΡΠ°Π±Π»ΠΈΡΠ°
Π€ΠΎΡΠΌΠ°Ρ TGA ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ: pseudo-color (ΠΏΡΠ΅Π²Π΄ΠΎΡΠ²Π΅Ρ), direct-color ΠΈ true-color.
ΠΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΈΠΊΡΠ΅Π»Ρ ΠΏΡΠ΅Π²Π΄ΠΎΡΠ²Π΅ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Ρ ΡΠ°Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ. Π ΡΡΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅ Π·Π°ΠΏΠΈΡΠ°Π½Ρ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ²Π΅ΡΠΎΠ²ΡΠ΅ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ Π½Π° ΡΠΊΡΠ°Π½Π΅ Π΄ΠΈΡΠΏΠ»Π΅Ρ. Π¦Π²Π΅ΡΠΎΠ²ΡΠ΅ ΡΠ°Π±Π»ΠΈΡΡ ΠΏΡΠ΅Π²Π΄ΠΎΡΠ²Π΅ΡΠ½ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ Π²ΡΠ΅ ΡΠ²Π΅ΡΠΎΠ²ΡΠ΅ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ²Π΅Ρ Π² Π²ΠΈΠ΄Π΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, ΠΏΡΠΈΡΠ΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ°Π½Π°Π»Π° ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½ΠΎ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Ρ.
ΠΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ direct-color ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ ΠΏΡΠ΅Π²Π΄ΠΎΡΠ²Π΅ΡΠ½ΡΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π² Π½ΠΈΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΠΊΠ°Π½Π°Π» (ΠΊΡΠ°ΡΠ½ΡΠΉ, Π·Π΅Π»Π΅Π½ΡΠΉ ΠΈ ΡΠΈΠ½ΠΈΠΉ) Π·Π°ΠΏΠΈΡΠ°Π½ ΠΊΠ°ΠΊ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½ΠΎ. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΈΠΊΡΠ΅Π»Ρ Π΄Π°Π½Π½ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ direct-color ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠ° — ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠ°Π½Π°Π» ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ.
ΠΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ true-color Ρ ΡΠ°Π½ΡΡ ΡΠ²Π΅ΡΠΎΠ²ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΠΈΠΊΡΠ΅Π»Ρ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π² Π΄Π°Π½Π½ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΈ Π΄Π»Ρ ΠΈΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ²Π΅ΡΠΎΠ²Π°Ρ ΡΠ°Π±Π»ΠΈΡΠ° Π½Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ.
Π¦Π²Π΅ΡΠΎΠ²Π°Ρ ΡΠ°Π±Π»ΠΈΡΠ° ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ Π² ΡΠ°ΠΉΠ»Π΅ ΡΠΎΡΠΌΠ°ΡΠ° TGA ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»Π΅ ColorMapType Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ Π² 1. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ 0 ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΡΠΎ, ΡΡΠΎ ΡΠ²Π΅ΡΠΎΠ²Π°Ρ ΡΠ°Π±Π»ΠΈΡΠ° Π² ΡΡΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ.
Π¦Π²Π΅ΡΠΎΠ²Π°Ρ ΡΠ°Π±Π»ΠΈΡΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΎΠ²Π°ΡΡ Π² TGA-ΡΠ°ΠΉΠ»Π΅ Π΄Π°ΠΆΠ΅ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΎΠ½Π° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ.
Π€ΠΎΡΠΌΠ°Ρ TGA ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ²Π΅ΡΠΎΠ²ΡΠ΅ ΡΠ°Π±Π»ΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ. ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Π΄ΡΡΠ³ΠΈΡ ΡΠΎΡΠΌΠ°ΡΠΎΠ² ΡΡΠ΅Π±ΡΡΡ, ΡΡΠΎΠ±Ρ ΡΠ²Π΅ΡΠΎΠ²Π°Ρ ΡΠ°Π±Π»ΠΈΡΠ° ΠΈΠΌΠ΅Π»Π° ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π½Π° ΠΏΠΈΠΊΡΠ΅Π»ΡΠ½ΠΎΠΉ Π³Π»ΡΠ±ΠΈΠ½Π΅ Π΄Π°Π½Π½ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, 8-Π±ΠΈΡΠΎΠ²ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ 256-ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΡΡ ΡΠ²Π΅ΡΠΎΠ²ΡΡ ΡΠ°Π±Π»ΠΈΡΡ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π΄Π»Ρ Π΅Π³ΠΎ ΡΠ΅ΠΏΡΠΎΠ΄ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π²ΡΠ΅Π³ΠΎ 4 ΡΠ²Π΅ΡΠ°. Π Π²ΠΎΡ ΡΠΎΡΠΌΠ°Ρ TGA Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠΈΠΊΡΠ΅Π»ΡΠ½ΠΎΠΉ Π³Π»ΡΠ±ΠΈΠ½Ρ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π΅ 57 ΡΠ²Π΅ΡΠΎΠ², ΠΌΠΎΠΆΠ΅Ρ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΡΠ²Π΅ΡΠΎΠ²ΡΡ ΡΠ°Π±Π»ΠΈΡΡ, ΡΠΎΡΡΠΎΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ· 57 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². ΠΠ°Π½Π½ΡΠ΅ ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ Π² ΠΏΠΎΠ»Π΅ Π‘ΠΠ°ΡLength Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΡΠ°ΠΉΠ»Π° TGA.
ΠΡΡΠ°ΠΆΠ΅Π½Π½ΡΠΉ Π² Π±ΠΈΡΠ°Ρ ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π² ΠΏΠΎΠ»Π΅ CMapDepth Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΡΠ°ΠΉΠ»Π°. ΠΠΈΠΊΡΠ΅Π»ΡΠ½Π°Ρ Π³Π»ΡΠ±ΠΈΠ½Π° Π΄Π°Π½Π½ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π³Π»ΡΠ±ΠΈΠ½Π΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ. ΠΠ»Ρ 24-Π±ΠΈΡΠΎΠ²ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠ²Π΅ΡΠΎΠ²Π°Ρ ΡΠ°Π±Π»ΠΈΡΠ° ΠΈΠ· 256 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈΠΌΠ΅Π΅Ρ Π³Π»ΡΠ±ΠΈΠ½Ρ 24 Π±ΠΈΡΠ°, ΠΈ Π² ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ ΡΠ°ΠΊΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΏΠΈΠΊΡΠ΅Π»ΠΈ Π³Π»ΡΠ±ΠΈΠ½ΠΎΠΉ Π²ΡΠ΅Π³ΠΎ Π² 8 Π±ΠΈΡΠΎΠ². ΠΡΠΎΠΉ Π³Π»ΡΠ±ΠΈΠ½Ρ Π²ΠΏΠΎΠ»Π½Π΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ 256 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². ΠΠΏΠΎΠ»Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ TGA-ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠ²Π΅ΡΠΎΠ²ΡΡ ΡΠ°Π±Π»ΠΈΡΡ ΠΈΠ· 4096 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Ρ Π³Π»ΡΠ±ΠΈΠ½ΠΎΠΉ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° 8 Π±ΠΈΡΠΎΠ². Π ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½Π°Ρ ΠΏΠΈΠΊΡΠ΅Π»ΡΠ½Π°Ρ Π³Π»ΡΠ±ΠΈΠ½Π°, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ°Ρ Π΄Π»Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°, Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΡΠ°Π²Π½ΠΎΠΉ 12 Π±ΠΈΡΠ°ΠΌ, Ρ ΠΎΡΡ 16-Π±ΠΈΡΠΎΠ²ΡΠ΅ ΠΏΠΈΠΊΡΠ΅Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΠΏΡΠΎΡΠ΅ ΠΈ ΡΠΈΡΠ°ΡΡ, ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ. ΠΠΎΠ½ΡΡΠΈΠ΅ Π³Π»ΡΠ±ΠΈΠ½Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ Π²ΡΠ΅Π³Π΄Π° Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π°Π»ΡΡΠ°-ΠΊΠ°Π½Π°Π», ΠΎΠ²Π΅ΡΠ»Π΅ΠΉΠ½ΡΠ΅ Π±ΠΈΡΡ ΠΈΠ»ΠΈ Π±ΠΈΡΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π΅ΡΡΡ.
1.1.4 ΠΠ°Π½Π½ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
ΠΠ°Π½Π½ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΎΠ±ΡΡΠ½ΠΎ ΡΠ»Π΅Π΄ΡΡΡ Π·Π° Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ, Π½ΠΎ Π΅ΡΠ»ΠΈ Π² ΡΠ°ΠΉΠ»Π΅ ΠΈΠΌΠ΅Π΅ΡΡΡ ΡΠ²Π΅ΡΠΎΠ²Π°Ρ ΡΠ°Π±Π»ΠΈΡΠ° ΠΈ/ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΡΠΎ Π΄Π°Π½Π½ΡΠ΅ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ ΠΏΠΎΡΠ»Π΅ Π½ΠΈΡ .
Π Π°Π·ΠΌΠ΅Ρ TGA-ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ 65 535 ΠΏΠΈΠΊΡΠ΅Π»ΡΠΌΠΈ ΠΏΠΎ Π²ΡΡΠΎΡΠ΅ ΠΈ ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ ΠΏΠΎ ΡΠΈΡΠΈΠ½Π΅.
ΠΠ°Π½Π½ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ (Width x Height) ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΈΠΊΡΠ΅Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΠΎΡΠΌΠ°ΡΠΎΠ²:
Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ (8-Π±ΠΈΡΠΎΠ²ΡΠΉ ΠΏΠΈΠΊΡΠ΅Π»Ρ);
ΠΊΡΠ°ΡΠ½ΡΠΉ, Π·Π΅Π»Π΅Π½ΡΠΉ, ΡΠΈΠ½ΠΈΠΉ (16-Π±ΠΈΡΠΎΠ²ΡΠΉ ΠΏΠΈΠΊΡΠ΅Π»Ρ Ρ ΠΎΠ²Π΅ΡΠ»Π΅ΠΉΠ½ΡΠΌ Π±ΠΈΡΠΎΠΌ (15-ΠΉ Π±ΠΈΡ));
ΠΊΡΠ°ΡΠ½ΡΠΉ, Π·Π΅Π»Π΅Π½ΡΠΉ, ΡΠΈΠ½ΠΈΠΉ (24-Π±ΠΈΡΠΎΠ²ΡΠΉ ΠΏΠΈΠΊΡΠ΅Π»Ρ);
Π°Π»ΡΡΠ°-ΠΊΠ°Π½Π°Π», ΠΊΡΠ°ΡΠ½ΡΠΉ, Π·Π΅Π»Π΅Π½ΡΠΉ, ΡΠΈΠ½ΠΈΠΉ (32-Π±ΠΈΡΠΎΠ²ΡΠΉ ΠΏΠΈΠΊΡΠ΅Π»Ρ).
Π§ΠΈΡΠ°ΡΡ ΠΈΠ»ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ ΠΏΠΈΠΊΡΠ΅Π»ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π² 8-, 16-, 24 — ΠΈΠ»ΠΈ 32-Π±ΠΈΡΠΎΠ²ΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅ ΡΠ°ΠΊ ΠΆΠ΅ ΠΏΡΠΎΡΡΠΎ, ΠΊΠ°ΠΊ ΡΠΈΡΠ°ΡΡ ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ Π±Π°ΠΉΡΡ Π΄Π°Π½Π½ΡΡ .
ΠΠ΄Π½Π°ΠΊΠΎ 16-Π±ΠΈΡΠΎΠ²ΡΠ΅ ΠΏΠΈΠΊΡΠ΅Π»ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΡΠΎΡΠΌΠ°ΡΠ° TGA Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ»ΠΎΠΆΠ½Π΅Π΅. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Ρ PixelDepth = 16 ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π² Π΄Π°Π½Π½ΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΈΠΊΡΠ΅Π»Ρ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΎ ΠΏΠΎ 5 Π±ΠΈΡΠΎΠ² Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΡΠ²Π΅ΡΠΎΠ²ΡΡ Π²Π΅Π»ΠΈΡΠΈΠ½ (ΠΊΡΠ°ΡΠ½ΠΎΠΉ, Π·Π΅Π»Π΅Π½ΠΎΠΉ ΠΈ ΡΠΈΠ½Π΅ΠΉ), Π° ΠΎΠ΄ΠΈΠ½ Π±ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΠ²Π΅ΡΠ»Π΅ΠΉΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ (ΡΠΌ. Π½ΠΈΠΆΠ΅). ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΈ 16 Π±ΠΈΡΠΎΠ² Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π² 2 Π±Π°ΠΉΡΠ°Ρ , ΡΠΎ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΠΈ Π·Π°ΠΏΠΈΡΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠ°ΠΊΠΈΡ ΠΏΠΈΠΊΡΠ΅Π»ΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΄Π²ΠΈΠ³ ΠΈ ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅.
ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±ΠΈΡΠΎΠ² Π°ΡΡΠΈΠ±ΡΡΠΎΠ² Π² ΠΏΠΈΠΊΡΠ΅Π»Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ Π±ΠΈΡΠΎΠ² 0−3 ΠΏΠΎΠ»Ρ ImageDescriptor Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ Π±ΠΈΡΠΎΠ² Π² ΠΏΠΈΠΊΡΠ΅Π»Π΅, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΠ²ΡΠ·Π°Π½Ρ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Ρ Π΅Π³ΠΎ ΡΠ²Π΅ΡΠΎΠ²ΡΠΌΠΈ Π²Π΅Π»ΠΈΡΠΈΠ½Π°ΠΌΠΈ.
Π ΡΠΎΡΠΌΠ°ΡΠ΅ TGA 16 ΡΠΎΠ»ΡΠΊΠΎ 15 ΠΈΠ· 16 Π±ΠΈΡΠΎΠ² ΠΏΠΈΠΊΡΠ΅Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ. ΠΠ°ΠΆΠ΄ΡΠΉ 16-ΠΉ Π±ΠΈΡ, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ ΠΎΠ²Π΅ΡΠ»Π΅ΠΉΠ½ΡΠΌ, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π΄Π»Ρ Π·Π°Π΄Π°Π½ΠΈΡ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΠΈ (ΠΏΠΈΠΊΡΠ΅Π»Ρ Π½Π΅ Π²ΠΈΠ΄Π΅Π½) ΠΈΠ»ΠΈ Π½Π΅ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΠΈ (ΠΏΠΈΠΊΡΠ΅Π»Ρ Π²ΠΈΠ΄Π΅Π½) ΠΏΠΈΠΊΡΠ΅Π»Ρ ΠΏΡΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ Π½Π° Π²ΠΈΠ΄Π΅ΠΎΠΌΠΎΠ½ΠΈΡΠΎΡΠ΅.
Π ΡΠΎΡΠΌΠ°ΡΠ΅ TGA 32 ΠΏΠΈΠΊΡΠ΅Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ 32 Π±ΠΈΡΠ°ΠΌΠΈ, ΠΏΡΠΈΡΠ΅ΠΌ ΡΠ²Π΅ΡΠΎΠ²Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Ρ ΡΠ°Π½ΠΈΡΡΡ Π² 24 Π±ΠΈΡΠ°Ρ , Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ 8 Π±ΠΈΡΠΎΠ² Π°ΡΡΠΈΠ±ΡΡΠΎΠ² Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΠΈΠΊΡΠ΅Π»Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π°Π»ΡΡΠ°-ΠΊΠ°Π½Π°Π»Π°.
ΠΠ»ΡΡΠ°-ΠΊΠ°Π½Π°Π» — ΡΡΠΎ ΡΡΠ»ΠΎΠ²Π½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π·Π°Π΄Π°ΡΡΠ΅Π΅ ΡΡΠ΅ΠΏΠ΅Π½Ρ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΠΈΠΊΡΠ΅Π»Ρ. ΠΠ½Π°ΡΠ΅Π½ΠΈΡ Π°Π»ΡΡΠ°-ΠΊΠ°Π½Π°Π»Π° ΠΈ ΠΎΠ²Π΅ΡΠ»Π΅ΠΉΠ½ΡΡ Π±ΠΈΡΠΎΠ² ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΏΡΠΈ Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π° Π΄ΡΡΠ³ΠΎΠ΅ ΠΈΠ»ΠΈ Π½Π° «ΠΆΠΈΠ²ΡΡ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°ΡΡΠΈΠ½ΠΊΡ». ΠΠ΄ΠΈΠ½ ΠΎΠ²Π΅ΡΠ»Π΅ΠΉΠ½ΡΠΉ Π±ΠΈΡ (ΠΊΠ°ΠΊ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ TGA 16) ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° ΡΠΎ, Π²ΠΈΠ΄ΠΈΠΌ ΠΏΠΈΠΊΡΠ΅Π»Ρ ΠΈΠ»ΠΈ Π½Π΅Ρ; Π²ΠΎΡΠ΅ΠΌΡ Π±ΠΈΡΠΎΠ² ΡΠΎΡΠ½ΠΎΡΡΠΈ ΠΌΠΎΠ³ΡΡ ΡΠΏΡΠ°Π²Π»ΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΡΡ ΠΏΠΈΠΊΡΠ΅Π»Ρ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΠΈ (0) Π΄ΠΎ ΠΏΠΎΠ»Π½ΠΎΠΉ Π½Π΅ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΠΈ (255).
ΠΠ°Π½Π½ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π·Π°ΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π² ΡΠ°ΠΉΠ»Π΅ TGA, ΠΎΠ±ΡΡΠ½ΠΎ Π½Π΅ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ (Π½Π΅ ΠΊΠΎΠ΄ΠΈΡΡΡΡΡΡ). ΠΠΎ ΡΡΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅ ΡΠ°ΠΉΠ»Ρ TGA, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, Π²Π΅ΡΡΠΌΠ° Π³ΡΠΎΠΌΠΎΠ·Π΄ΠΊΠΈ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π΅ΡΠ»ΠΈ ΡΠ°ΡΡΡΠΎΠ²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠΌΠ΅ΡΡ Π³Π»ΡΠ±ΠΈΠ½Ρ 24 ΠΈΠ»ΠΈ 32 Π±ΠΈΡΠ°. ΠΠ° ΡΡΠΎΡ ΡΠ»ΡΡΠ°ΠΉ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ TGA ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Π° ΠΏΡΠΎΡΡΠ°Ρ, Π½ΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Π°Ρ ΡΡ Π΅ΠΌΠ° ΡΠΆΠ°ΡΠΈΡ RLE. ΠΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΆΠ°ΡΠΎ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° RLE. Π ΡΠΆΠ°ΡΠΎΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ Π² ΠΎΠ±ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠΆΠ°ΡΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡΡ ΠΎΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΊ Π΄ΡΡΠ³ΠΎΠΉ. ΠΠ°ΠΆΠ°ΡΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ ΡΠ΅ΡΠΈΡ Π³ΡΡΠΏΠΏ, ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΠΏΡΠ°Π²Π»ΡΡΡΠ΅Π³ΠΎ Π±Π°ΠΉΡΠ° ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ. Π‘ΡΠ°ΡΡΠΈΠΉ Π±ΠΈΡ ΡΠΏΡΠ°Π²Π»ΡΡΡΠ΅Π³ΠΎ Π±Π°ΠΉΡΠ° ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ ΡΠΈΠΏ Π³ΡΡΠΏΠΏΡ — Π»ΠΈΡΠ΅ΡΠ°Π»ΡΠ½Π°Ρ ΠΈΠ»ΠΈ ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΠΌΠ°Ρ, Π° ΠΌΠ»Π°Π΄ΡΠΈΠ΅ 7 Π±ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ Π΄Π»ΠΈΠ½Ρ Π³ΡΡΠΏΠΏΡ. ΠΠ»ΠΈΠ½Π° Π³ΡΡΠΏΠΏΡ Π½Π° 1 Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ΡΠΏΡΠ°Π²Π»ΡΡΡΠ΅ΠΌ Π±Π°ΠΉΡΠ΅, ΡΠ°ΠΊ ΡΡΠΎ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ ΡΠΏΡΠ°Π²Π»ΡΡΡΠ΅Π³ΠΎ Π±Π°ΠΉΡΠ° ΠΎΡ 0h Π΄ΠΎ 7Fh ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ Π΄Π»ΠΈΠ½Π°ΠΌ ΠΎΡ 1 Π΄ΠΎ 128 ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ. ΠΡΠ»ΠΈ ΡΡΠ°ΡΡΠΈΠΉ Π±ΠΈΡ — 1, ΡΠΎ Π³ΡΡΠΏΠΏΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠ΅ΠΉΡΡ, Ρ. Π΅. ΠΈΠΌΠ΅Π΅ΡΡΡ 1 ΠΏΠΈΠΊΡΠ΅Π»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·. ΠΡΠ»ΠΈ ΡΡΠ°ΡΡΠΈΠΉ Π±ΠΈΡ — 0, Π³ΡΡΠΏΠΏΠ° — Π»ΠΈΡΠ΅ΡΠ°Π»ΡΠ½Π°Ρ ΠΈ Π² Π½Π΅ΠΉ ΡΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΊΠ°Π·Π°Π½ΠΎ Π² Π΄Π»ΠΈΠ½Π΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΠΉ Π±Π°ΠΉΡ 0Fh — Π»ΠΈΡΠ΅ΡΠ°Π»ΡΠ½Π°Ρ Π³ΡΡΠΏΠΏΠ°, ΠΈ Π·Π° ΡΡΠΈΠΌ Π±Π°ΠΉΡΠΎΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ 16 ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ. Π£ΠΏΡΠ°Π²Π»ΡΡΡΠΈΠΉ Π±Π°ΠΉΡ 88h — ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠ°ΡΡΡ Π³ΡΡΠΏΠΏΠ°, ΠΈ Π·Π° ΡΡΠΈΠΌ Π±Π°ΠΉΡΠΎΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ 1 ΠΏΠΈΠΊΡΠ΅Π»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΡΡΡ Π² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ 9 ΡΠ°Π·.
Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΡΠΌΠ°Ρ ΡΠ°ΠΉΠ»
1.2 Π€ΠΎΡΠΌΠ°Ρ BMP
Π€ΠΎΡΠΌΠ°Ρ ΡΠ°ΠΉΠ»Π° BMP (ΡΠΎΠΊΡΠ°ΡΠ΅Π½Π½ΠΎ ΠΎΡ BitMaP) — ΡΡΠΎ «ΡΠΎΠ΄Π½ΠΎΠΉ» ΡΠΎΡΠΌΠ°Ρ ΡΠ°ΡΡΡΠΎΠ²ΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠΈ Π΄Π»Ρ Windows, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π±Π»ΠΈΠ·ΠΊΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΌΡ ΡΠΎΡΠΌΠ°ΡΡ Windows, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Ρ ΡΠ°Π½ΠΈΡ ΡΠ²ΠΎΠΈ ΡΠ°ΡΡΡΠΎΠ²ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ. ΠΠ»Ρ ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°ΠΉΠ»Π°, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π² BMP-ΡΠΎΡΠΌΠ°ΡΠ΅, ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ BMP, Ρ ΠΎΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΈΠΌΠ΅ΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ RLE, ΠΎΠ·Π½Π°ΡΠ°ΡΡΠ΅Π΅ run length encoding (ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρ ΡΠ΅ΡΠΈΠΉ). Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ RLE ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°ΠΉΠ»Π° ΠΎΠ±ΡΡΠ½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΎ ΡΠΆΠ°ΡΠΈΠ΅ ΡΠ°ΡΡΡΠΎΠ²ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΡΠ°ΠΉΠ»Π° ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π΄Π²ΡΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΡΠΆΠ°ΡΠΈΡ RLE, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡ Π΄Π»Ρ ΡΠ°ΠΉΠ»ΠΎΠ² BMP-ΡΠΎΡΠΌΠ°ΡΠ°.
Π ΡΠ°ΠΉΠ»Π°Ρ BMP ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠ²Π΅ΡΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΈΠΊΡΠ΅Π»Π° ΠΊΠΎΠ΄ΠΈΡΡΠ΅ΡΡΡ 1, 4, 8, 16 ΠΈΠ»ΠΈ 24 Π±ΠΈΡ (Π±ΠΈΡ/ΠΏΠΈΠΊΡΠ΅Π»). Π§ΠΈΡΠ»ΠΎΠΌ Π±ΠΈΡ/ΠΏΠΈΠΊΡΠ΅Π», Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΌ ΡΠ°ΠΊΠΆΠ΅ Π³Π»ΡΠ±ΠΈΠ½ΠΎΠΉ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ²Π΅ΡΠ°, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΡΠ²Π΅ΡΠΎΠ² Π² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ. ΠΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈ Π³Π»ΡΠ±ΠΈΠ½Π΅ 1 Π±ΠΈΡ/ΠΏΠΈΠΊΡΠ΅Π» ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π²ΡΠ΅Π³ΠΎ Π΄Π²Π° ΡΠ²Π΅ΡΠ°, Π° ΠΏΡΠΈ Π³Π»ΡΠ±ΠΈΠ½Π΅ 24 Π±ΠΈΡ/ΠΏΠΈΠΊΡΠ΅Π» — Π±ΠΎΠ»Π΅Π΅ 16 ΠΌΠ»Π½. ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ²Π΅ΡΠΎΠ².
Π€ΠΎΡΠΌΠ°Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ Π΄Π°Π½Π½ΡΡ ΡΠ°ΡΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° Π² ΡΠ°ΠΉΠ»Π΅ BMP Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΈΡΠ»Π° Π±ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π΄Π»Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΎ ΡΠ²Π΅ΡΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΈΠΊΡΠ΅Π»Π°. ΠΡΠΈ 256-ΡΠ²Π΅ΡΠ½ΠΎΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΈΠΊΡΠ΅Π» Π² ΡΠΎΠΉ ΡΠ°ΡΡΠΈ ΡΠ°ΠΉΠ»Π°, Π³Π΄Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ Π΄Π°Π½Π½ΡΠ΅ ΡΠ°ΡΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°, ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ Π±Π°ΠΉΡΠΎΠΌ (8 Π±ΠΈΡ). ΠΡΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΠΈΠΊΡΠ΅Π»Π° Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠ²Π΅ΡΠΎΠ² RGB, Π° ΡΠ»ΡΠΆΠΈΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΌ Π΄Π»Ρ Π²Ρ ΠΎΠ΄Π° Π² ΡΠ°Π±Π»ΠΈΡΡ ΡΠ²Π΅ΡΠΎΠ² ΡΠ°ΠΉΠ»Π°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π΅ΡΠ»ΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ²Π΅ΡΠ° RGB Π² ΡΠ°Π±Π»ΠΈΡΠ΅ ΡΠ²Π΅ΡΠΎΠ² ΡΠ°ΠΉΠ»Π° BMP Ρ ΡΠ°Π½ΠΈΡΡΡ R/G/B=255/0/0, ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΈΠΊΡΠ΅Π»Π° 0 Π² ΡΠ°ΡΡΡΠΎΠ²ΠΎΠΌ ΠΌΠ°ΡΡΠΈΠ²Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΡΡΠΊΠΎ-ΠΊΡΠ°ΡΠ½ΡΠΉ ΡΠ²Π΅Ρ. ΠΠ½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΈΠΊΡΠ΅Π»ΠΎΠ² Ρ ΡΠ°Π½ΡΡΡΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΈΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ»Π΅Π²Π° Π½Π°ΠΏΡΠ°Π²ΠΎ, Π½Π°ΡΠΈΠ½Π°Ρ (ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ) Ρ Π½ΠΈΠΆΠ½Π΅ΠΉ ΡΡΡΠΎΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π² 256-ΡΠ²Π΅ΡΠ½ΠΎΠΌ BMP-ΡΠ°ΠΉΠ»Π΅ ΠΏΠ΅ΡΠ²ΡΠΉ Π±Π°ΠΉΡ Π΄Π°Π½Π½ΡΡ ΡΠ°ΡΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ Π΄Π»Ρ ΡΠ²Π΅ΡΠ° ΠΏΠΈΠΊΡΠ΅Π»Π°, Π½Π°Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎΡΡ Π² Π½ΠΈΠΆΠ½Π΅ΠΌ Π»Π΅Π²ΠΎΠΌ ΡΠ³Π»Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ; Π²ΡΠΎΡΠΎΠΉ Π±Π°ΠΉΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ½Π΄Π΅ΠΊΡ Π΄Π»Ρ ΡΠ²Π΅ΡΠ° ΡΠΎΡΠ΅Π΄Π½Π΅Π³ΠΎ ΡΠΏΡΠ°Π²Π° ΠΏΠΈΠΊΡΠ΅Π»Π° ΠΈ Ρ. Π΄. ΠΡΠ»ΠΈ ΡΠΈΡΠ»ΠΎ Π±Π°ΠΉΡ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ Π½Π΅ΡΠ΅ΡΠ½ΠΎ, ΡΠΎ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ Π±Π°ΠΉΡ, ΡΡΠΎΠ±Ρ Π²ΡΡΠΎΠ²Π½ΡΡΡ Π΄Π°Π½Π½ΡΠ΅ ΡΠ°ΡΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΏΠΎ 16-Π±ΠΈΡ Π³ΡΠ°Π½ΠΈΡΠ°ΠΌ.
ΠΠ΅ Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ BMP ΠΈΠΌΠ΅ΡΡ ΡΡΡΡΠΊΡΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ ΡΡΡΡΠΊΡΡΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΠΉΠ»Ρ BMP Ρ Π³Π»ΡΠ±ΠΈΠ½ΠΎΠΉ 16 ΠΈ 24 Π±ΠΈΡ/ΠΏΠΈΠΊΡΠ΅Π» Π½Π΅ ΠΈΠΌΠ΅ΡΡ ΡΠ°Π±Π»ΠΈΡ ΡΠ²Π΅ΡΠΎΠ²; Π² ΡΡΠΈΡ ΡΠ°ΠΉΠ»Π°Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΈΠΊΡΠ΅Π»ΠΎΠ² ΡΠ°ΡΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΠ·ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ²Π΅ΡΠΎΠ² RGB. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡΡ ΡΠ°Π·Π»ΠΈΡΠ°ΡΡΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΡΠΎΡΠΌΠ°ΡΡ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠ°Π·Π΄Π΅Π»ΠΎΠ² ΡΠ°ΠΉΠ»Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΡΠ°ΡΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ 16 ΠΈ 256-ΡΠ²Π΅ΡΠ½ΡΡ BMP-ΡΠ°ΠΉΠ»Π°Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠΆΠΈΠΌΠ°ΡΡΡΡ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° RLE, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΡΡ ΠΏΠΈΠΊΡΠ΅Π»ΠΎΠ² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π° Π»Π΅ΠΊΡΠ΅ΠΌΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠ΅ ΡΠΈΡΠ»ΠΎ ΠΏΠΈΠΊΡΠ΅Π»ΠΎΠ² Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΈΡ ΡΠ²Π΅Ρ. Π Windows Π΄ΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΡΠ°Π±ΠΎΡΠ° Ρ BMP-ΡΠ°ΠΉΠ»Π°ΠΌΠΈ ΡΡΠΈΠ»Ρ OS/2, Π² ΠΊΠΎΡΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΎΡΠΌΠ°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΡΠ°ΡΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΈ ΡΠ°Π±Π»ΠΈΡΡ ΡΠ²Π΅ΡΠΎΠ².
ΠΡΠ½ΠΎΠ²Π½ΡΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΡΠ°ΠΉΠ»Π° ΡΠ²Π»ΡΡΡΡΡ:
— Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ;
— ΠΏΠ°Π»ΠΈΡΡΠ° (Π΅ΡΠ»ΠΈ Π½ΡΠΆΠ½Π°);
— ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅.
1.2.1 ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ BMP
Π‘ΡΡΡΠΊΡΡΡΠ° BITMAPFILEHEADER, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠ°Ρ Π΄Π»Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΡΠ°ΡΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° bmfHeader, ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅:
Π ΠΈΡΡΠ½ΠΎΠΊ 1.1 — Π‘ΡΡΡΠΊΡΡΡΠ° BITMAPFILEHEADER
ΠΠΎΠ»Π΅ bfType Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ASCII-ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π ΠΈ Π, ΠΊΠΎΡΠΎΡΡΠ΅, ΡΠ°Π·ΡΠΌΠ΅Π΅ΡΡΡ, ΠΎΠ·Π½Π°ΡΠ°ΡΡ bitmap. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ°Π²Π½Ρ 0×42 ΠΈ 0x4D. ΠΡΠΈ Π»ΡΠ±ΡΡ Π΄ΡΡΠ³ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡΡ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ ΡΠ°ΠΉΠ» Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΎΠΏΠΎΠ·Π½Π°Π²Π°ΡΡΡΡ Windows ΠΊΠ°ΠΊ ΡΠ°ΡΡΡΠΎΠ²ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. CΠ»ΠΎΠ²ΠΎ ΡΠΈΠΏΠ° WORD ΡΠ°Π·ΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ, Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΠΌΠ»Π°Π΄ΡΠ΅Π³ΠΎ Π±Π°ΠΉΡΠ°, ΠΏΠΎΡΡΠΎΠΌΡ, ΡΠΎΡΠΌΠΈΡΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ Π²ΠΈΠ΄Π° bfType = 0x4d42.
ΠΠΎΠ»Π΅ bfSize ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ°Π·ΠΌΠ΅Ρ Π²ΡΠ΅Π³ΠΎ ΡΠ°ΠΉΠ»Π° Π² Π±Π°ΠΉΡΠ°Ρ .
ΠΠΎΠ»Π΅ bfOffbits Π·Π°Π΄Π°Π΅Ρ Π±Π°ΠΉΡΠΎΠ²ΠΎΠ΅ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎ Π½Π°ΡΠ°Π»Π° ΡΠ°ΡΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. ΠΡΠ»ΠΈ BMP-ΡΠ°ΠΉΠ» ΠΏΡΠΎΡΠΈΡΠ°Π½ Π² ΠΏΠ°ΠΌΡΡΡ, ΡΠΎ ΠΏΠΎΠ»Π΅ bfOffbits ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΡΠΈΡΠ»ΠΈΡΡ Π°Π΄ΡΠ΅Ρ Π½Π°ΡΠ°Π»Π° ΠΌΠ°ΡΡΠΈΠ²Π° aBitmapBits.
1.2.2 ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°
ΠΠΎΡΠ»Π΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΡΠ°ΡΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° bmi Header,
Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°Ρ ΠΈ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅ ΡΠ°ΡΡΡΠ°.
Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ°Ρ ΡΡΡΡΠΊΡΡΡΠ° BITMAPINFOHEADER ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° Π² ΡΠ°ΠΉΠ»Π΅ wingdi. h:
Π ΠΈΡΡΠ½ΠΎΠΊ 1.2 — Π‘ΡΡΡΠΊΡΡΡΠ° Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°
ΠΠΎΠ»Ρ biWidth ΠΈ biHeight ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΠΈΡΠΈΠ½Ρ ΠΈ Π²ΡΡΠΎΡΡ Π±ΠΈΡΠΎΠ²ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.
ΠΡΡΠΎΡΠ° biHeight ΠΎΠ±ΡΡΠ½ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π²Π΅Π»ΠΈΡΠΈΠ½ΠΎΠΉ, Π½ΠΎ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΉ. ΠΠ½Π°ΠΊ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΡΡΡΠΎΠΊ ΡΠ°Π·Π²Π΅ΡΡΠΊΠΈ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ ΠΏΠΈΠΊΡΠ΅Π»ΠΎΠ². ΠΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌΡ ΠΏΠΎΡΡΠ΄ΠΊΡ ΡΡΡΠΎΠΊ (ΡΠ½ΠΈΠ·Ρ Π²Π²Π΅ΡΡ ), ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΠΈΠΊΡΠ΅Π» ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ²ΡΠΌ ΠΏΠΈΠΊΡΠ΅Π»ΠΎΠΌ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΡΡΡΠΎΠΊΠΈ ΡΠ°Π·Π²Π΅ΡΡΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. Π’Π°ΠΊΠΈΠ΅ DIB-ΡΠ°ΡΡΡΡ Π½Π°Π·ΡΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅Π²Π΅ΡΠ½ΡΡΡΠΌΠΈ (bottom-up). ΠΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΏΡΡΠΌΠΎΠΌΡ ΠΏΠΎΡΡΠ΄ΠΊΡ ΡΡΡΠΎΠΊ (ΡΠ²Π΅ΡΡ Ρ Π²Π½ΠΈΠ·), ΠΈ ΡΠ°ΠΊΠΈΠ΅ DIB-ΡΠ°ΡΡΡΡ Π½Π°Π·ΡΠ²Π°ΡΡ Π½Π΅ΠΏΠ΅ΡΠ΅Π²Π΅ΡΠ½ΡΡΡΠΌΠΈ (top-down). Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ BMP-ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΡΡΡΠΎΠΊ ΡΠ°Π·Π²Π΅ΡΡΠΊΠΈ. ΠΠΎΠ»Π΅ bi Planes Π·Π°Π΄Π°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ²Π΅ΡΠΎΠ²ΡΡ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠ΅ΠΉ Π΄Π»Ρ ΡΠ΅Π»Π΅Π²ΠΎΠ³ΠΎ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π°. Π ΡΠ°Π·Π½ΡΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½Π°Ρ ΡΡΡΡΠΊΡΡΡΠ° ΡΡΡΠΎΠΊ ΡΠ°Π·Π²Π΅ΡΡΠΊΠΈ (Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΠ²Π΅ΡΠΎΠ²ΡΠΌΠΈ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΡΠΌΠΈ).
Π€ΠΎΡΠΌΠ°Ρ DIB ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΠΎΠ»Π΅ biPlanes Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΠΌΠ΅ΡΡ Π΅Π΄ΠΈΠ½ΠΈΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
ΠΠΎΠ»Π΅ biBitCount ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±ΠΈΡΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π΄Π»Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ²Π΅ΡΠ° ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΈΠΊΡΠ΅Π»Π°. ΠΠ½ΠΎΠ³Π΄Π° ΡΡΡ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΡ Π½Π°Π·ΡΠ²Π°ΡΡ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ Π³Π»ΡΠ±ΠΈΠ½ΠΎΠΉ.
1.2.3 ΠΠ°Π»ΠΈΡΡΠ° BMP
Π¦Π²Π΅ΡΠΎΠ²Π°Ρ ΡΠ°Π±Π»ΠΈΡΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ ΡΡΡΡΠΊΡΡΡ ΡΠΈΠΏΠ° RGBQUAD. ΠΡΠΎΡ ΡΠΈΠΏ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
Π ΠΈΡΡΠ½ΠΎΠΊ 1.3 — Π‘ΡΡΡΠΊΡΡΡΠ° RGBQUAD
ΠΠΎΠ»Ρ ΡΡΡΡΠΊΡΡΡΡ Π·Π°Π΄Π°ΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ²Π½ΠΎΡΡΡ Π΄Π»Ρ ΡΠΈΠ½Π΅ΠΉ, Π·Π΅Π»Π΅Π½ΠΎΠΉ ΠΈ ΠΊΡΠ°ΡΠ½ΠΎΠΉ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΡ ΡΠ²Π΅ΡΠ° ΠΏΠΈΠΊΡΠ΅Π»Π°. ΠΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ ΠΏΠΎΠ»Π΅ Π² ΡΡΡΡΠΊΡΡΡΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π·Π΅ΡΠ²Π½ΡΠΌ. ΠΠ±ΡΡΠ½ΠΎ ΡΠ²Π΅ΡΠΎΠ²Π°Ρ ΡΠ°Π±Π»ΠΈΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² DIB-ΡΠ°ΡΡΡΠ°Ρ , ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ 256 ΡΠ²Π΅ΡΠΎΠ². Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΈΠΊΡΠ΅Π» ΠΌΠ°ΡΡΠΈΠ²Π° aBitmapBits ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡ Π² ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅. ΠΠ½ΠΎΠ³Π΄Π° ΡΠ²Π΅ΡΠΎΠ²ΡΡ ΡΠ°Π±Π»ΠΈΡΡ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΠΈ Π² DIB-ΡΠ°ΡΡΡΡ ΡΠΎΡΠΌΠ°ΡΠ° True Color (Hi Color), ΡΡΠΎ, Π½Π° ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π·Π³Π»ΡΠ΄, ΠΊΠ°ΠΆΠ΅ΡΡΡ ΠΈΠ·Π±ΡΡΠΎΡΠ½ΡΠΌ. ΠΠΎ ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ ΡΠ°ΡΡΡΡ Ρ ΡΡΠ΅Π±ΡΠ΅ΠΌΡΠΌ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΡΠ²Π΅ΡΠΎΠ² Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π°Ρ , Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΡ ΡΠΎΡΠΌΠ°Ρ True Color, Π° ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ Ρ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΠΏΠ°Π»ΠΈΡΡΠΎΠΉ.
ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅ Π·Π°Π΄Π°Π΅ΡΡΡ Π² ΠΏΠΎΠ»Π΅ biCLrUsed Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°. ΠΡΠ»ΠΈ ΡΡΠΎ ΠΏΠΎΠ»Π΅ ΠΈΠΌΠ΅Π΅Ρ Π½ΡΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π΄Π»Ρ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ Π³Π»ΡΠ±ΠΈΠ½Ρ.
1.2.4 ΠΠ°Π½Π½ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ BMP
ΠΠΈΠΊΡΠ΅Π»Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Ρ ΡΠ°Π½ΡΡΡΡ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ ΠΏΠΈΠΊΡΠ΅Π»ΠΎΠ² aBitmapBits. ΠΡΠ»ΠΈ ΠΏΠΎΠ»Π΅ biHeight Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠΎ ΡΡΡΠΎΠΊΠΈ ΡΠ°Π·Π²Π΅ΡΡΠΊΠΈ Ρ ΡΠ°Π½ΡΡΡΡ Π² ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, Π΅ΡΠ»ΠΈ ΠΆΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ — ΡΠΎ Π² ΠΏΡΡΠΌΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅.
ΠΠΈΠΊΡΠ΅Π»Ρ ΡΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°ΡΡΡΡ Π²Π½ΡΡΡΠΈ ΡΡΡΠΎΠΊΠΈ ΡΠ°Π·Π²Π΅ΡΡΠΊΠΈ Π΄Π»Ρ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΠΈ ΠΌΠ΅ΡΡΠ°.
Π‘ΡΡΠΎΠΊΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΡΡΡΡΡ Π±ΠΈΡΠ°ΠΌΠΈ Π΄ΠΎ Π³ΡΠ°Π½ΠΈΡΡ Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π°. ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±Π°ΠΉΡΠΎΠ² Π½Π° ΡΡΡΠΎΠΊΡ Π²ΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΠΎΡΠΌΡΠ»Π΅:
bytesPertine = ((width * MtCount + 31) / 32) * 4:
Π³Π΄Π΅ width — ΡΠΈΡΠΈΠ½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΠΏΠΈΠΊΡΠ΅Π»Π°Ρ , a bitCount — ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±ΠΈΡ Π½Π° ΠΏΠΈΠΊΡΠ΅Π».
ΠΠ»Ρ Π½Π΅ΡΠΆΠ°ΡΡΡ ΡΠ°ΡΡΡΠΎΠ² DIB, Ρ ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΠ»Π΅ biCompression ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ BI_RGB, ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ ΠΏΠΈΠΊΡΠ΅Π»Π°ΠΌ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΡΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ. ΠΠ°ΡΡΠΈΠ² ΠΏΠΈΠΊΡΠ΅Π»ΠΎΠ² aBitmapBits ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΠΊΠ°ΠΊ Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΠΉ, ΡΡΠΎ ΠΎΡΡΠ°ΠΆΠ°Π»ΠΎ Π±Ρ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΡ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π² Π½Π΅ΠΌ ΡΡΡΠΎΠΊ ΡΠ°Π·Π²Π΅ΡΡΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ DIB Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° Π°Π΄ΡΠ΅Ρ ΠΎΠ΄Π½ΠΎΠΌΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°. ΠΠΎΡΡΠΎΠΌΡ ΡΠ΄ΠΎΠ±Π½Π΅ΠΉ ΠΎΠ±ΡΡΠ²Π»ΡΡΡ aBitmapBits ΠΊΠ°ΠΊ ΠΎΠ΄Π½ΠΎΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ², Π° ΠΏΡΡΠΌΠΎΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΏΠΈΠΊΡΠ΅Π»Π°ΠΌ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² «Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ» Π΄Π²ΡΠΌΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° Π² ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ «ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ» ΠΎΠ΄Π½ΠΎΠΌΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°.
2 ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ°ΠΉΠ»Π°
2.1 ΠΡΠΊΡΡΡΠΈΠ΅ ΡΠ°ΠΉΠ»Π° TGAΠ‘Ρ Π΅ΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΎΡΠΊΡΡΡΠΈΠ΅ ΡΠ°ΠΉΠ»Π° ΡΠΎΡΠΌΠ°ΡΠ° TGA ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΎ Π½Π° ΡΠΈΡ. 2.1
Π ΠΈΡΡΠ½ΠΎΠΊ 2.1 — Π‘Ρ Π΅ΠΌΠ° ΠΎΡΠΊΡΡΡΠΈΡ ΡΠ°ΠΉΠ»Π°.
ΠΠ° ΡΠΈΡΡΠ½ΠΊΠ΅ 2.2 ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΎΡΠΊΡΡΡΠΈΡ ΡΠ°ΠΉΠ»Π° ΡΠΎΡΠΌΠ°ΡΠ° TGA. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π΅Π³ΠΎ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅.
Π‘Π½Π°ΡΠ°Π»Π° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΎΡΠΊΡΡΡΠΈΠ΅ ΡΠ°ΠΉΠ»Π° Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΠΌΡΠ€Π°ΠΉΠ»Π°. tga. Π ΡΠ»ΡΡΠ°Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΏΡΠΈ ΠΎΡΠΊΡΡΡΠΈΠΈ ΡΠ°ΠΉΠ»Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΡΠ΄Π°Π΅ΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΈ Π΄Π°Π»Π΅Π΅ ΠΈΠ΄Π΅Ρ Π²ΡΡ ΠΎΠ΄ ΠΈΠ· Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°.
ΠΠ°Π»Π΅Π΅ ΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ (ΡΠΌ. 1.1.2) ΠΈΠ· ΡΠ°ΠΉΠ»Π°. ΠΡΠΎΠ²Π΅ΡΡΡΡΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅.
Π ΠΈΡΡΠ½ΠΎΠΊ 2.2 — ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΠΎΡΠΊΡΡΡΠΈΡ ΡΠ°ΠΉΠ»Π° ΡΠΎΡΠΌΠ°ΡΠ° TGA.
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠΈΠΏ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π³ΠΎΡΡ Π² ΡΠ°ΠΉΠ»Π΅. ΠΡΠ»ΠΈ ΡΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ°, Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ, ΡΠΎ ΠΏΠΎΡΠ»Π΅ Π²ΡΠ²ΠΎΠ΄Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ Π·Π°Π²Π΅ΡΡΠ°Π΅Ρ ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ.
ΠΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ Π² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ ΠΏΠ°Π»ΠΈΡΡΡ (ΡΠΌ. 1.1.3) Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΅Π΅ ΡΠ²Π΅ΡΠΎΠ² ΡΠΈΡΠ°ΡΡΡΡ ΠΈΠ· ΡΠ°ΠΉΠ»Π° ΠΈ Π΄Π°Π»Π΅Π΅ ΡΠΈΡΠ°ΡΡΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ (ΡΠΌ. 1.1.4), ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ 8-ΠΌΠΈ Π±ΠΈΡΠ½ΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΡΠ²Π΅ΡΠΎΠ² Π² ΠΏΠ°Π»ΠΈΡΡΠ΅.
ΠΡΠ»ΠΈ Π² ΡΠ°ΠΉΠ»Π΅ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ ΠΏΠ°Π»ΠΈΡΡΠ°, ΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΡΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ Π² ΡΠ΅Π±Π΅ ΡΠ²Π΅Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΈΠΊΡΠ΅Π»Ρ.
ΠΠΎΡΠ»Π΅ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π²ΡΠ΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ°ΠΉΠ» Π·Π°ΠΊΡΡΠ²Π°Π΅ΡΡΡ.
2.2 ΠΡΠΊΡΡΡΠΈΠ΅ ΡΠ°ΠΉΠ»Π° BMP
ΠΡΠΊΡΡΡΠΈΠ΅ BMP ΡΠ°ΠΉΠ»Π° ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ LoadFromFile, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ BMP-ΡΠ°ΠΉΠ» Ρ Π·Π°Π΄Π°Π½Π½ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΡΡΠΈΡΡΠ²Π°Ρ Π΅Π³ΠΎ Ρ Π΄ΠΈΡΠΊΠ° Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΡΡ ΠΏΠ°ΠΌΡΡΡ. Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ½Π°ΡΠ°Π»Π° ΡΠΈΡΠ°Π΅ΡΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΡΠ°ΡΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°, Π·Π°ΡΠ΅ΠΌ Π²ΡΡΠΈΡΠ»ΡΡΡΡΡ ΡΠ°Π·ΠΌΠ΅Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° Π² ΡΠΎΠ²ΠΎΠΊΡΠΏΠ½ΠΎΡΡΠΈ Ρ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π² ΠΏΠΎΠ»Π΅ infoHeadSize.
ΠΠΎΠΌΠΈΠΌΠΎ ΡΡΠΎΠ³ΠΎ Π² ΠΏΠΎΠ»Π΅ imageSize ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² Π±Π°ΠΉΡΠ°Ρ . ΠΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ΄Π΅Π»ΡΠ΅ΠΌΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΠΎΠ΄ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° plnfoHead ΠΈ ΠΏΠΎΠ΄ ΠΌΠ°ΡΡΠΈΠ² ΠΏΠΈΠΊΡΠ΅Π»ΠΎΠ² aBitmapBits. ΠΠΎΡΠ»Π΅ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΠ²ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΡΠ°ΡΡΡΠ° ΡΠΈΡΠ°ΡΡΡΡ ΠΈΠ· ΡΠ°ΠΉΠ»Π°.
ΠΠ° ΡΠΈΡΡΠ½ΠΊΠ΅ 2.3 ΠΏΠΎΠΊΠ°Π·Π°Π½ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠ΅Π½ΠΈΡ BMP ΡΠ°ΠΉΠ»Π°.
2.3 ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π½Π° ΡΠΈΡΡΠ½ΠΊΠ΅
Π ΠΈΡΡΠ½ΠΎΠΊ 2.3 — ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΡΡΠ΅Π½ΠΈΡ BMP ΡΠ°ΠΉΠ»Π°
Π ΠΈΡΡΠ½ΠΎΠΊ 2.4 — ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π°
3. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΡΠ΅ΠΊΡΠΎΠ²
Π Π΄Π°Π½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠΈΡ ΡΠΏΠ΅ΡΡΡΡΠ΅ΠΊΡΠΎΠ² Π·Π°ΡΡΠΌΠ»Π΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΡ ΠΈ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π½ΠΈΠΆΠ΅.
3.1 ΠΠ°ΡΡΠΌΠ»Π΅Π½ΠΈΠ΅ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠ΅ΠΉ B
ΠΠ»Π³ΠΎΡΠΈΡΠΌ Π·Π°ΡΡΠΌΠ»Π΅Π½ΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠ΅ΠΉ B ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π½Π° ΡΠΈΡΡΠ½ΠΊΠ΅ 3.1.
Π ΠΈΡΡΠ½ΠΎΠΊ 3.1 — ΠΠ»Π³ΠΎΡΠΈΡΠΌ Π·Π°ΡΡΠΌΠ»Π΅Π½ΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΠΎ B
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ Π·Π°ΡΡΠΌΠΈΡΡ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ B Π² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΅ΡΠ»ΠΈ Π² ΡΠ°ΠΉΠ»Π΅ Π΅ΡΡΡ ΠΏΠ°Π»ΠΈΡΡΠ°, ΡΠΎ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΡΠ²Π΅ΡΡ ΠΏΠ°Π»ΠΈΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° B ΠΏΡΠΈΠ±Π°Π²ΠΈΡΡ Π·Π°Π΄Π°Π½Π½ΡΠΉ ΡΡΠΌ.
ΠΡΠ»ΠΈ Π² ΡΠ°ΠΉΠ»Π΅ Π½Π΅Ρ ΠΏΠ°Π»ΠΈΡΡΡ, ΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΈΠΊΡΠ΅Π»Ρ Π½ΡΠΆΠ½ΠΎ ΡΠ°Π·Π»ΠΎΠΆΠΈΡΡ Π½Π° RGB, ΠΏΡΠΈΠ±Π°Π²ΠΈΡΡ ΠΊ B Π·Π°Π΄Π°Π½Π½ΡΠΉ ΡΡΠΌ, Π²Π΅ΡΠ½ΡΡΡ ΠΏΠΈΠΊΡΠ΅Π»Ρ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ ΡΠΎΡΠΌΠ°Ρ ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
Π ΡΠ»ΡΡΠ°Π΅ Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠ΅ΠΉ B Π²ΡΡ ΠΎΠ΄ΠΈΡ Π·Π° Π³ΡΠ°Π½ΠΈΡΡ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎΠ³ΠΎ Π΅Π³ΠΎ ΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡΡΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ³ΠΎ Π΄Π»Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΈΠΊΡΠ΅Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°.
3.2 ΠΠ°ΡΡΠΌΠ»Π΅Π½ΠΈΠ΅ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠ΅ΠΉ S
ΠΠ»Π³ΠΎΡΠΈΡΠΌ Π·Π°ΡΡΠΌΠ»Π΅Π½ΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠ΅ΠΉ S ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π½Π° ΡΠΈΡΡΠ½ΠΊΠ΅ 3.2.
Π ΠΈΡΡΠ½ΠΎΠΊ 3.2 — ΠΠ»Π³ΠΎΡΠΈΡΠΌ Π·Π°ΡΡΠΌΠ»Π΅Π½ΠΈΡ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠ΅ΠΉ S.
ΠΠ°Π½Π½ΡΠ΅ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Ρ ΡΠ°Π½ΡΡΡΡ Π² Π±Π°Π·ΠΈΡΠ΅ RGB ΠΈ Π΄Π»Ρ Π·Π°ΡΡΠΌΠ»Π΅Π½ΠΈΡ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠ΅ΠΉ S Π±Π°Π·ΠΈΡΠ° HLS Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ²Π΅ΡΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΈΠΊΡΠ΅Π»Ρ ΠΈΠ· Π±Π°Π·ΠΈΡΠ° RGB Π² Π±Π°Π·ΠΈΡ HLS, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° RGB_to_HLS. ΠΠ°Π»Π΅Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π·Π°ΡΡΠΌΠ»Π΅Π½ΠΈΠ΅ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠ΅ΠΉ S, ΠΏΡΠΈΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΊ Π½Π΅ΠΉ ΡΡΠΌΠ°, Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ, ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±Π°Π·ΠΈΡΠ° Π² Π΄ΡΡΠ³ΠΎΠΉ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ΅ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ HLS_to_RGB.
HLS (Hue, Lightness, Saturation — ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΡΠΎΠ½, ΡΠ²Π΅ΡΠ»ΠΎΡΠ°, Π½Π°ΡΡΡΠ΅Π½Π½ΠΎΡΡΡ) — ΠΌΠΎΠ΄Π΅Π»Ρ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ Π½Π° ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ° ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠ°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ²Π½ΠΎΠ³ΠΎ Π·Π°Π΄Π°Π½ΠΈΡ ΡΡΠ΅Π±ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΎΡΡΠ΅Π½ΠΊΠ° ΡΠ²Π΅ΡΠ° (ΡΠΈΡ. 3.3). ΠΡΠ° ΠΌΠΎΠ΄Π΅Π»Ρ ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ ΠΏΠΎΠ΄ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠ΅Π΅ ΡΠΎΠ±ΠΎΠΉ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ ΠΊΠΎΠ½ΡΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠ΅ΡΠ½ΡΠΉ ΡΠ²Π΅Ρ Π·Π°Π΄Π°Π΅ΡΡΡ Π²Π΅ΡΡΠΈΠ½ΠΎΠΉ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ ΠΊΠΎΠ½ΡΡΠ° ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ L = 0, Π±Π΅Π»ΡΠΉ ΡΠ²Π΅Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ²Π½ΠΎΡΡΠΈ Π·Π°Π΄Π°Π΅ΡΡΡ Π²Π΅ΡΡΠΈΠ½ΠΎΠΉ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΠΊΠΎΠ½ΡΡΠ° ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ L = 1. ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ²Π½ΡΠ΅ ΡΠ²Π΅ΡΠΎΠ²ΡΠ΅ ΡΠΎΠ½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΠΎΠ² Ρ L = 0.5, ΡΡΠΎ Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΡΠ΄ΠΎΠ±Π½ΠΎ.
Π ΠΈΡΡΠ½ΠΎΠΊ 3.3 — ΠΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ HLS
Π¦Π²Π΅ΡΠΎΠ²ΠΎΠΉ ΡΠΎΠ½ H, Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΡΠΈΡΡΠ΅ΠΌΠ΅ HSV, Π·Π°Π΄Π°Π΅ΡΡΡ ΡΠ³Π»ΠΎΠΌ ΠΏΠΎΠ²ΠΎΡΠΎΡΠ°.
ΠΠ°ΡΡΡΠ΅Π½Π½ΠΎΡΡΡ S ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ ΠΎΡ 0 Π΄ΠΎ 1 ΠΈ Π·Π°Π΄Π°Π΅ΡΡΡ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ ΠΎΡ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΎΡΠΈ L Π΄ΠΎ Π±ΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΠΈ ΠΊΠΎΠ½ΡΡΠ°. Π’. Π΅. ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π½Π°ΡΡΡΠ΅Π½Π½ΡΠ΅ ΡΠ²Π΅ΡΠΎΠ²ΡΠ΅ ΡΠ²Π΅ΡΠ° ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ ΠΏΡΠΈ L=0.5, S=1.
Π ΠΎΠ±ΡΠ΅ΠΌ, ΡΠΈΡΡΠ΅ΠΌΡ HLS ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΡ ΠΈΠ· HSV «Π²ΡΡΡΠ³ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ» ΡΠΎΡΠΊΠΈ V=1, S=0, Π·Π°Π΄Π°ΡΡΠ΅ΠΉ Π±Π΅Π»ΡΠΉ ΡΠ²Π΅Ρ, Π²Π²Π΅ΡΡ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΠΊΠΎΠ½ΡΡΠ°.
Π€ΠΎΡΠΌΡΠ»Ρ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΠΈΠ· RGB Π² HLS:
Π€ΠΎΡΠΌΡΠ»Ρ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΠΈΠ· HLS Π² RGB:
3.3 Π€ΠΈΠ»ΡΡΡΠ°ΡΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
ΠΠ»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ ΡΠΈΠ»ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°Π΄Π°Π΅ΡΡΡ ΠΌΠ°ΡΡΠΈΡΠ΅ΠΉ 3×3. ΠΠ°ΡΡΠΈΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½Π° Π½Π° ΡΠΈΡ. 3.4
Π ΠΈΡΡΠ½ΠΎΠΊ 3.4 — ΠΠ°ΡΡΠΈΡΠ° ΡΠΈΠ»ΡΡΡΠ° 4
Π ΠΈΡΡΠ½ΠΎΠΊ 3.5 — ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.
ΠΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠΊΡΡΠ²Π°Π΅ΡΡΡ ΡΡΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΠ΅ΠΉ, Π² ΡΠΈΠΊΠ»Π΅ ΠΏΠΎΠΏΠΈΠΊΡΠ΅Π»ΡΠ½ΠΎ. ΠΡΠΈ ΡΡΠΎΠΌ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΌΠ°ΡΡΠΈΡΡ ΡΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΡΡΡ Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠ΅ΠΉ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΏΠΈΠΊΡΠ΅Π»Ρ. ΠΡΠΈ ΡΠ΅ΠΌ, Π΅ΡΠ»ΠΈ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠ°Ρ Π²ΡΡ ΠΎΠ΄ΠΈΡ Π·Π° ΡΠ°ΠΌΠΊΠΈ 0.255, ΡΠΎ ΠΎΠ½Π° ΠΏΡΠΈΡΠ°Π²Π½ΠΈΠ²Π°Π΅ΡΡΡ ΠΊ Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅ΠΉ Π³ΡΠ°Π½ΠΈΡΠ΅ ΡΡΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π°.
ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΡΠΈΠ»ΡΡΡΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π½Π° ΡΠΈΡ. 3.5
4. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΡΠΎΡΠΌΠ°ΡΠ°ΠΌΠΈ
4.1 ΠΡΠ±ΠΎΡ ΡΡΠ΅Π΄ΡΡΠ² Π΄Π»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
ΠΠ°Π½Π½ΡΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΏΡΠΎΠ΄ΡΠΊΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΡΠ·ΡΠΊΠ΅ Π‘++, Π² ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Microsoft Visual C++ 2005.
ΠΡΠ° ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ° Π²ΡΠ±ΡΠ°Π½Π° ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΠΎΠ½Π° ΡΠ²Π»ΡΡΡΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΡΠΌ, ΠΈ Π² ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ ΠΌΠΎΡΠ½ΡΠΌ, ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠΌ ΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ 32-ΡΠ°Π·ΡΡΠ΄Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Windows. ΠΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠ΅Π²ΠΎΡΡ ΠΎΠ΄ΡΡ ΠΊΠ°ΠΊ ΠΏΠΎ ΠΎΠ±ΡΡΠΌΡ, ΡΠ°ΠΊ ΠΈ ΠΏΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ²ΠΎΠΈΡ ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΈΠΊΠΎΠ² Π΄Π»Ρ 16-ΡΠ°Π·ΡΡΠ΄Π½ΠΎΠΉ Windows ΠΈ Π΅ΡΡ Π±ΠΎΠ»Π΅Π΅ Π΄ΡΠ΅Π²Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΎΠΎΠ±ΡΠ΅ ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠ»ΠΈΡΡ Π±Π΅Π· Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°. ΠΠΎ, Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ ΡΡΠΎ, ΠΎΠ±ΡΡΠΌ ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°ΡΡΡΡ, Π΄Π»Ρ ΠΈΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ° ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π½Π΅ Π±ΠΎΠ»ΡΡΠ΅, Π° ΠΌΠ΅Π½ΡΡΠ΅ ΡΡΠΈΠ»ΠΈΠΉ, ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅ Π΄Π»Ρ ΡΠ΅Ρ , ΠΊΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π²ΡΠ±ΠΈΡΠ°Π΅Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π°.
ΠΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊΠΈΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ Microsoft Visual C++ 2005. ΠΡΠ½Π°ΡΡΠ½Π½ΡΠΉ Π½Π°Π±ΠΎΡΠΎΠΌ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΡ ΠΌΠ°ΡΡΠ΅ΡΠΎΠ² (Wizard), ΡΠΎΡΠΌΠΈΡΡΡΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄, ΡΡΠΎΡ ΠΏΡΠΎΠ΄ΡΠΊΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Ρ ΡΡΠΈΡΠ°Π½Π½ΡΠ΅ ΡΠ΅ΠΊΡΠ½Π΄Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Windows. ΠΠΊΠ»ΡΡΡΠ½Π½Π°Ρ Π² ΡΠΎΡΡΠ°Π² Microsoft Visual C++ 2005 Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΊΠ»Π°ΡΡΠΎΠ² Microsoft Foundation Classes (MFC) ΡΠΆΠ΅ ΡΡΠ°Π»Π° ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ² C++. ΠΠΈΠ·ΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΡ ΠΌΠ΅Π½Ρ ΠΈ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΡΡ ΠΎΠΊΠΎΠ½ Π² ΡΠ²Π»Π΅ΠΊΠ°ΡΠ΅Π»ΡΠ½ΡΡ ΠΈΠ³ΡΡ. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠ΅ ΠΏΡΠΎΠ΄ΡΠΊΡΡ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ Π² Microsoft Visual C++ 2005 ΠΏΡΠΎΡΡΡ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ Π½Π΅ ΡΡΠ΅Π±ΡΡΡ Π³Π»ΡΠ±ΠΎΠΊΠΈΡ Π·Π½Π°Π½ΠΈΠΉ ΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ Ρ Π½ΠΈΠΌΠΈ.
Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π΄Π»Ρ Microsoft Visual C++ 2005 ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΊΠ»Π°ΡΡΠΎΠ², ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΎΡΠΊΡΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ ΠΊΠΎΠ΄ΠΎΠ².
Π―Π·ΡΠΊ Π‘++ Π±ΡΠ» Π²ΡΠ±ΡΠ°Π½ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΠΎΠ½ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π΅Π½, ΠΏΡΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΠΈ Π·Π°Π΄Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. Π‘ΡΠ΅Π΄ΠΈ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ² ΡΠ·ΡΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΈ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Π² Π΄ΡΡΠ³ΡΡ, Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½ΠΎΡΡΡ Π·Π°ΠΏΠΈΡΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ², Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΡΡ ΡΡΡΠΎΠΉΠ½ΠΎΡΡΡ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΡΡΠ°Π²Π½ΠΈΠΌΡΡ ΠΏΠΎ ΡΠΊΠΎΡΠΎΡΡΠΈ Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌΠΈ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΌΠΈ Π½Π° Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ΅. Π―Π·ΡΠΊ Π‘++ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π΅Π½, Ρ.ΠΊ. ΠΈΠΌΠ΅Π΅Ρ ΠΏΠΎΠ»Π½ΡΠΉ Π½Π°Π±ΠΎΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΡΡΡΡΠΊΡΡΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΠΌ ΠΌΠΎΠ΄ΡΠ°Π»ΡΠ½ΠΎΡΡΡ, Π±Π»ΠΎΡΠ½ΡΡ ΡΡΡΡΠΊΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ°Π·Π΄Π΅Π»ΡΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ. Π ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ Π½Π°Π±ΠΎΡ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ ΡΡΠ΅Π΄ΡΡΠ², ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΡ ΠΈΠΌΠ΅ΡΡ ΡΠ΄ΠΎΠ±Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΠΌ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΡ Π΄ΠΎΠ±ΡΠ°ΡΡΡΡ Π΄ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π±ΠΈΡΠ° ΠΏΠ°ΠΌΡΡΠΈ.
4.2 Π‘ΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ
Π Π΄Π°Π½Π½ΠΎΠΉ ΠΊΡΡΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ 3 ΠΊΠ»Π°ΡΡΠ°: KWnd, KDib, Tga. ΠΠ»Π°ΡΡ KWnd, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΠΈΡΡΠ΅ΡΡΡ ΠΊΠΎΠ΄, ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ ΠΎΠΊΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°, ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠΊΠ½Π° ΠΈ ΠΏΠΎΠΊΠ°Π· Π΅Π³ΠΎ Π½Π° ΡΠΊΡΠ°Π½Π΅. ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΠΊΠ»Π°ΡΡΠ° KWnd ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ 12 ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ². ΠΠ΅ΡΠ²ΡΠ΅ ΡΠ΅ΡΡΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΡΠ²Π»ΡΡΡΡΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΌΠΈ, Π° ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΈΠΌΠ΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
Π§Π΅ΡΠ²Π΅ΡΡΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΌ Π½Π° ΡΡΠ½ΠΊΡΠΈΡ, ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΡΡ ΡΠ΅ΡΡΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° LRESULT. ΠΠ΄Π΅ΡΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»Π΅Π½ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ WINAPI ΠΈΠ»ΠΈ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΡΠΉ Π΅ΠΌΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ stdcall. ΠΠ»Π°ΡΡ KDib ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ°ΠΉΠ»ΠΎΠΌ BMP. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠ»Π°ΡΡΠ° ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π½Π° ΡΠΈΡΡΠ½ΠΊΠ΅ 4.1.
Π ΠΈΡΡΠ½ΠΎΠΊ 4.1 — ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΊΠ»Π°ΡΡΠ° KDib
ΠΡΠΎΠΌΠ΅ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΡ Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠ° ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΈ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡ, ΠΊΠ»Π°ΡΡ KDib ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ Π½ΠΈΠΆΠ΅:
1) ΠΠ΅ΡΠΎΠ΄ CreateDib24 ΡΠΎΠ·Π΄Π°Π΅Ρ Π² ΠΏΠ°ΠΌΡΡΠΈ 24-ΡΠ°Π·ΡΡΠ΄Π½ΡΠΉ ΡΠ°ΡΡΡ Ρ Π·Π°Π΄Π°Π½Π½ΡΠΌΠΈ ΡΠΈΡΠΈΠ½ΠΎΠΉ ΠΈ Π²ΡΡΠΎΡΠΎΠΉ. Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΡΠ°ΡΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π²ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΠ°ΠΌΡΡΡ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΏΠΈΠΊΡΠ΅Π»ΠΎΠ². Π Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠΊΡΡΠ²Π°Π΅ΡΡΡ Π΄ΠΈΡΠΊΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ» Ρ Π·Π°Π΄Π°Π½Π½ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠΉ Π΄Π»Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ Π² Π½Π΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΠ°ΡΡΡΠ°.
2) ΠΠ΅ΡΠΎΠ΄ SetPixel ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅Ρ ΠΏΡΡΠΌΠΎΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΏΠΈΠΊΡΠ΅Π»Π°ΠΌ Π² 24-ΡΠ°Π·ΡΡΠ΄Π½ΠΎΠΌ ΡΠ°ΡΡΡΠ΅. Π¦Π²Π΅ΡΠΎΠ²Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π΄Π»Ρ ΡΠΈΠ½Π΅ΠΉ, Π·Π΅Π»Π΅Π½ΠΎΠΉ ΠΈ ΠΊΡΠ°ΡΠ½ΠΎΠΉ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΡ ΡΠ²Π΅ΡΠ° ΠΏΠΈΠΊΡΠ΅Π»Π° Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° aBitmapBits. ΠΠ΄ΡΠ΅ΡΠ° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π²ΡΡΠΈΡΠ»ΡΡΡΡΡ ΡΠ΅ΡΠ΅Π· Π½ΠΎΠΌΠ΅Ρ ΡΡΡΠΎΠΊΠΈ ΡΠ°Π·Π²Π΅ΡΡΠΊΠΈ Ρ ΠΈ Π½ΠΎΠΌΠ΅Ρ ΠΏΠΈΠΊΡΠ΅Π»Π° Π² ΡΡΡΠΎΠΊΠ΅ Ρ .
3) ΠΠ΅ΡΠΎΠ΄ StoreDib24 ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΡΠ°ΡΡΡ, Π·Π°ΠΏΠΈΡΡΠ²Π°Ρ Π΅Π³ΠΎ Π½Π° Π΄ΠΈΡΠΊ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ BMP.
4) ΠΠ΅ΡΠΎΠ΄ LoadFromFile Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ BMP-ΡΠ°ΠΉΠ» Ρ Π·Π°Π΄Π°Π½Π½ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΡΡΠΈΡΡΠ²Π°Ρ Π΅Π³ΠΎ Ρ Π΄ΠΈΡΠΊΠ° Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΡΡ ΠΏΠ°ΠΌΡΡΡ. Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ½Π°ΡΠ°Π»Π° ΡΠΈΡΠ°Π΅ΡΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΡΠ°ΡΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°, Π·Π°ΡΠ΅ΠΌ Π²ΡΡΠΈΡΠ»ΡΡΡΡΡ ΡΠ°Π·ΠΌΠ΅Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° Π² ΡΠΎΠ²ΠΎΠΊΡΠΏΠ½ΠΎΡΡΠΈ Ρ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π² ΠΏΠΎΠ»Π΅ infoHeadSize. ΠΠΎΠΌΠΈΠΌΠΎ ΡΡΠΎΠ³ΠΎ Π² ΠΏΠΎΠ»Π΅ imageSize ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² Π±Π°ΠΉΡΠ°Ρ . ΠΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ΄Π΅Π»ΡΠ΅ΠΌΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΠΎΠ΄ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° plnfoHead ΠΈ ΠΏΠΎΠ΄ ΠΌΠ°ΡΡΠΈΠ² ΠΏΠΈΠΊΡΠ΅Π»ΠΎΠ² aBitmapBits. ΠΠΎΡΠ»Π΅ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΡΠ°ΡΡΡΠ° ΡΠΈΡΠ°ΡΡΡΡ ΠΈΠ· ΡΠ°ΠΉΠ»Π°.
5) ΠΠ΅ΡΠΎΠ΄ Draw Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠ°ΡΡΡ Π½Π° ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠ½ΠΊΡΠΈΡ StretchDIBits.
ΠΠ»Π°ΡΡ Tga ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ Tga. ΠΡΠΎΠΌΠ΅ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΡ Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠ° ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΈ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡ, ΠΊΠ»Π°ΡΡ Tga ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ Π½ΠΈΠΆΠ΅:
1) ΠΠ΅ΡΠΎΠ΄ LoadFromFile Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ Tga-ΡΠ°ΠΉΠ» Ρ Π·Π°Π΄Π°Π½Π½ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΡΡΠΈΡΡΠ²Π°Ρ Π΅Π³ΠΎ Ρ Π΄ΠΈΡΠΊΠ° Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΡΡ ΠΏΠ°ΠΌΡΡΡ. Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ½Π°ΡΠ°Π»Π° ΡΠΈΡΠ°Π΅ΡΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΡΠ°ΠΉΠ»Π°. ΠΠΎΠΌΠΈΠΌΠΎ ΡΡΠΎΠ³ΠΎ Π² ΠΏΠΎΠ»Π΅ imageSize ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² Π±Π°ΠΉΡΠ°Ρ . ΠΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ΄Π΅Π»ΡΠ΅ΠΌΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΠΎΠ΄ ΠΌΠ°ΡΡΠΈΠ² ΠΏΠΈΠΊΡΠ΅Π»ΠΎΠ² aBitmapBits. ΠΠΎΡΠ»Π΅ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΡΠΈΡΠ°ΡΡΡΡ ΠΈΠ· ΡΠ°ΠΉΠ»Π°.
2) ΠΠ΅ΡΠΎΠ΄ Draw Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Tga-ΡΠ°ΠΉΠ»Π° Π½Π° ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠ½ΠΊΡΠΈΡ SetPixel.
3) ΠΠ΅ΡΠΎΠ΄ RgbToHls ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡ Π΄Π°Π½ΡΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠ· RGB Π² HLS.
4) ΠΠ΅ΡΠΎΠ΄ HlsToRgb ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠ· HLS Π² RGB.
5) ΠΠ΅ΡΠΎΠ΄ NoiseB Π·Π°ΡΡΠΌΠ»ΡΠ΅Ρ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ B
6) ΠΠ΅ΡΠΎΠ΄ NoiseS ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠ· RGB Π² HLS, Π·Π°ΡΡΠΌΠ»ΡΠ΅Ρ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ S ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡ ΠΈΠ· HLS Π² RGB.
7) ΠΠ΅ΡΠΎΠ΄ Filter ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ ΡΠΈΠ»ΡΡΡ «ΡΠ°Π·ΠΌΡΡΠΈΠ΅» ΠΊ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.
4.3 ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ, ΠΈΡ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ ΠΈΡ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅:
KWnd. cpp — ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ, ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ ΠΈ ΠΏΠΎΠΊΠ°Π·Π° Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ;
KDib. cpp — ΠΌΠΎΠ΄ΡΠ»Ρ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΠΎΡΠΊΡΡΡΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ², ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ, ΠΏΠΎΠΊΠ°Π·Π° Π½Π° ΡΠΊΡΠ°Π½ ΡΠΎΡΠΌΠ°ΡΠ° TGA ΠΈ BMP. Π ΡΡΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ ΠΎΠΏΠΈΡΠ°Π½Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠΎΠ² KDib ΠΈ Tga Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΠ²ΡΡΡΠΈΠΌΠΈ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ;
TgaToBmp. cpp — ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°. Π Π½Π΅ΠΌ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ Π²ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΊΠ»Π°ΡΡΠΎΠ² KDib ΠΈ Tga;
Resource. h — ΡΠ°ΠΉΠ» ΡΠ΅ΡΡΡΡΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΡΠΎΠΏΠΈΡΠ°Π½ΠΎ ΠΌΠ΅Π½Ρ ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ.
Π‘ΡΡΡΠΊΡΡΡΠ° ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° Π½Π° ΡΠΈΡΡΠ½ΠΊΠ΅ 4.2.
Π ΠΈΡΡΠ½ΠΎΠΊ 4.2 — Π‘ΡΡΡΠΊΡΡΡΠ° ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
4.4 ΠΠ΅ΡΠ΅ΡΠ΅Π½Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ Π² ΠΌΠΎΠ΄ΡΠ»ΡΡ
Π ΡΠ°Π±Π»ΠΈΡΠ΅ 4.1 ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ ΠΏΠΎΠ»Ρ ΠΊΠ»Π°ΡΡΠ° KDib ΠΈ ΠΈΡ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
Π’Π°Π±Π»ΠΈΡΠ° 4.1 ΠΠΎΠ»Ρ ΠΊΠ»Π°ΡΡΠ° KDib.
ΠΠΎΠ»Π΅ | Π’ΠΈΠΏ | ΠΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ | |
aBitmapBits | BYTE* | ΠΠ°ΡΡΠΈΠ² ΠΏΠΈΠΊΡΠ΅Π»ΠΎΠ² | |
Width | INT | Π¨ΠΈΡΠΈΠ½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ | |
Height | INT | ΠΡΡΠΎΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ | |
bytesPerLine | INT | ΠΠΎΠ» — Π²ΠΎ Π±Π°ΠΉΡ Π² ΡΡΡΠΎΠΊΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ | |
fileHead | BITMAPFILEHEADER | ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΡΠ°ΡΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° | |
infoHead | BITMAPFILEHEADER | ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° | |
pInfoHead | BITMAPFILEHEADER* | Π£ΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΠΈΠ½ΡΠΎΠ±Π»ΠΎΠΊ | |
fileHeadSize | INT | Π Π°Π·ΠΌΠ΅Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° | |
infoHeadSize | INT | Π Π°Π·ΠΌΠ΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° | |
imageSize | INT | Π Π°Π·ΠΌΠ΅Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ | |
Error | STRING | Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ | |
outFile | Ofstream | ΠΠΌΡ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° | |
Π ΡΠ°Π±Π»ΠΈΡΠ΅ 4.2 ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ ΠΏΠΎΠ»Ρ ΠΊΠ»Π°ΡΡΠ° Tga ΠΈ ΠΈΡ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
Π’Π°Π±Π»ΠΈΡΠ° 4.2 ΠΠΎΠ»Ρ ΠΊΠ»Π°ΡΡΠ° TGA.
ΠΠΎΠ»Π΅ | Π’ΠΈΠΏ | ΠΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ | |
aBitmapBits | BYTE* | ΠΠ°ΡΡΠΈΠ² ΠΏΠΈΠΊΡΠ΅Π»ΠΎΠ² Π² RGB | |
aBitmapHLS | BYTE* | ΠΠ°ΡΡΠΈΠ² ΠΏΠΈΠΊΡΠ΅Π»ΠΎΠ² Π² HLS | |
idlength | CHAR | ΠΠ»ΠΈΠ½Π° ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ 18-ΡΠΈ Π±Π°ΠΉΡΠΎΠ²ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°. ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π° Π΄Π»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ°ΠΉΠ»Π° | |
colourmaptype | CHAR | ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π½Π°Π»ΠΈΡΠΈΡ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΠΊΠ°ΡΡΡ | |
Datatypecode | CHAR | Π’ΠΈΠΏ Π΄Π°Π½Π½ΡΡ — Π·Π°ΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈΠ»ΠΈ Π½Π΅Ρ | |
Colourmaporigin | INT | ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΠΊΠ°ΡΡΠ΅ | |
Colourmaplength | INT | ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΠΊΠ°ΡΡΠ΅ | |
Colourmapdepth | CHAR | ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΠΊΠ°ΡΡΠ΅ | |
X_origin | INT | ΠΠ°ΡΠ°Π»ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΠΎ ΠΎΡΠΈ X | |
Y_origin | INT | ΠΠ°ΡΠ°Π»ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΠΎ ΠΎΡΠΈ Y | |
Width | INT | Π¨ΠΈΡΠΈΠ½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ | |
Height | INT | ΠΡΡΠΎΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ | |
Bitsperpixel | CHAR | ΠΠΎΠ»-Π²ΠΎ Π±ΠΈΡ Π½Π° ΠΏΠΈΠΊΡΠ΅Π»Ρ — Π·Π΄Π΅ΡΡ ΡΠΎΠ»ΡΠΊΠΎ 24 ΠΈΠ»ΠΈ 32 | |
Imagedescriptor | CHAR | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ | |
imageSize | INT | Π Π°Π·ΠΌΠ΅Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ | |
Error | STRING | Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ | |
outFile | Ofstream | ΠΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°ΠΉΠ» | |
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΊΠ»Π°ΡΡΠ° KDib ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΎ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ 4.3.
Π’Π°Π±Π»ΠΈΡΠ° 4.3 ΠΠ΅ΡΠΎΠ΄Ρ ΠΊΠ»Π°ΡΡΠ° KDib.
ΠΠ΅ΡΠΎΠ΄ | Π’ΠΈΠΏ | ΠΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ | |
CreateDib24 | BOOL | Π‘ΠΎΠ·Π΄Π°Π΅Ρ BMP — ΡΠ°ΠΉΠ» | |
StoreDib24 | VOID | ΠΠ΅ΡΠ΅ΡΡΠ»ΠΊΠ° Π΄Π°Π½Π½ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ | |
LoadFromFile | BOOL | ΠΠ°Π³ΡΡΠΆΠ°Π΅Ρ BMP — ΡΠ°ΠΉΠ» | |
SetPixel | VOID | Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΠΏΠΈΠΊΡΠ΅Π»Ρ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ | |
Draw | INT | ΠΡΠ²ΠΎΠ΄ Π½Π° ΡΠΊΡΠ°Π½ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ | |
GetWidth | INT | ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΈΡΠΈΠ½Ρ | |
GetHeight | INT | ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π²ΡΡΠΎΡΡ | |
GetError | CHAR* | ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ | |
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΊΠ»Π°ΡΡΠ° Tga ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΎ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ 4.4.
Π’Π°Π±Π»ΠΈΡΠ° 4.4 ΠΠ΅ΡΠΎΠ΄Ρ ΠΊΠ»Π°ΡΡΠ° Tga.
ΠΠ΅ΡΠΎΠ΄ | Π’ΠΈΠΏ | ΠΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ | |
RgbToHls | VOID | ΠΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡ ΠΈΠ· RGB Π² HLS | |
HlsToRgb | VOID | ΠΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡ ΠΈΠ· HLS Π² RGB | |
LoadFromFile | BOOL | ΠΠ°Π³ΡΡΠΆΠ°Π΅Ρ BMP — ΡΠ°ΠΉΠ» | |
GetA | BYTE* | ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΌΠ°ΡΡΠΈΠ² ΠΏΠΈΠΊΡΠ΅Π»ΠΎΠ² | |
Draw | INT | ΠΡΠ²ΠΎΠ΄ Π½Π° ΡΠΊΡΠ°Π½ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ | |
GetWidth | INT | ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΈΡΠΈΠ½Ρ | |
GetHeight | INT | ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π²ΡΡΠΎΡΡ | |
NoiseB | VOID | ΠΠ°ΡΡΠΌΠ»ΡΠ΅Ρ B | |
NoiseS | VOID | ΠΠ°ΡΡΠΌΠ»ΡΠ΅Ρ S | |
Filter | VOID | Π€ΠΈΠ»ΡΡΡΡΠ΅Ρ | |
5. Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π°ΠΏΠΈΡΠ°Π½Π° ΠΏΠΎΠ΄ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΎΡ Windows XP Π΄ΠΎ Windows VISTA. ΠΠ»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠΈΡΡΠ΅ΠΌΡ Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π² ΠΎΡΠΎΠ±ΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ .
Π’ΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ — ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠΈΠΏΠ° Pentium ΠΈΠ»ΠΈ Celeron Ρ ΡΠ°ΠΊΡΠΎΠ²ΠΎΠΉ ΡΠ°ΡΡΠΎΡΠΎΠΉ Π½Π΅ Π½ΠΈΠΆΠ΅ 166 ΠΠΡ (ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ Pentium III 800 ΠΠΡ), ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ — 512 ΠΠ±Π°ΠΉΡ (ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ 1024 ΠΠ±Π°ΠΉΡ), Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° Π²ΡΠ΅Π³ΠΎ 50 MΠ±.
Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ NoiseS ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ Π³ΡΠ°Π½ΠΈΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΎ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ 5.1
Π’Π°Π±Π»ΠΈΡΠ° 5.1 — Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ NoiseS.
ΠΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ | Π Π΅Π·ΡΠ»ΡΡΠ°Ρ | Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ | ||||
S | Pixel | R | G | B | ||
Pal [Pixel] | Pal [Pixel] | Pal [Pixel] | ; | |||
— 1 | ΠΡΠΈΠ±ΠΊΠ°. | |||||
ΠΡΠΈΠ±ΠΊΠ° | ||||||
Pal [Pixel] | Pal [Pixel] | Pal [Pixel] | ΠΡΠΈΠ±ΠΊΠ° | |||
— 1 | ||||||
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π±ΡΠ»Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, ΠΈΠΌΠ΅ΡΡΠ°Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΠΈ ΠΏΡΠΎΡΡΠΎΠΉ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠ°Ρ ΠΎΡΠΊΡΡΡΠΈΠ΅, ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΎΡΠΌΠ°ΡΠΎΠ² TGA ΠΈ BMP, ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠ°Ρ ΡΠΏΠ΅ΡΡΡΡΠ΅ΠΊΡΡ.
ΠΡΠ²ΠΎΠ΄Ρ
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠ°Π±ΠΎΡΡ Π±ΡΠ»ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡ Π·Π°Π³ΡΡΠ·ΠΊΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠ° TGA. Π’Π°ΠΊΠΆΠ΅ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ BMP. Π ΠΎΡΠΊΡΡΡΠΎΠΌΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΡΡΠ΅ΠΊΡΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π·Π°ΡΡΠΌΠ»Π΅Π½ΠΈΠ΅ ΡΠ²Π΅ΡΠΎΠ²ΡΡ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΡ (B, S), ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠΈΠ»ΡΡΡΠ° Π·Π°Π΄Π°ΡΡΠ΅Π³ΠΎΡΡ ΠΌΠ°ΡΡΠΈΡΠ΅ΠΉ 3×3.
Π‘Π°ΠΌΡΠΌ ΠΏΡΠΎΡΡΡΠΌ Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠΊΠ°Π·Π°Π»ΡΡ ΡΠΎΡΠΌΠ°Ρ BMP, Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ Π½Π΅ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎΠΌ ΡΡΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΡΡΡΠΎΠΊ ΡΠ°Π·Π²Π΅ΡΡΠΊΠΈ Π² ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅.
Π€ΠΎΡΠΌΠ°Ρ TGA, ΠΊΠ°ΠΊ ΠΈ BMP ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ Π½Π΅ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΠΎΠΉ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π°Π½Π½ΡΡ . ΠΠ· ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° Π²ΠΈΠ΄ΠΎΠ² ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ — Π°Π»Π³ΠΎΡΠΈΡΠΌ RLE Π²Π²ΠΈΠ΄Ρ ΡΠ²ΠΎΠ΅ΠΉ ΠΏΡΠΎΡΡΠΎΡΡ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΡΠΆΠ°ΡΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ Π±ΡΠ»ΠΈ ΠΈΠ·ΡΡΠ΅Π½Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π²ΠΈΠ΄Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, Π°Π»Π³ΠΎΡΠΈΡΠΌΡ Π΅Π΅ ΡΠΆΠ°ΡΠΈΡ ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
ΠΠΎΡΠ»Π΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠ±ΡΠ°ΡΡ ΡΠ°ΠΉΠ» Π΄Π»Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ°. Π ΠΎΠΊΠ½Π΅ Π½Π°Π²ΠΈΠ³Π°ΡΠΈΠΈ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°ΠΌ ΠΈ Π²ΡΠ±ΠΎΡ ΡΠ°ΠΉΠ»ΠΎΠ². ΠΠΎΡΠ»Π΅ Π²ΡΠ±ΠΎΡΠ° ΡΠ°ΠΉΠ»Π° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π΅Π³ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΠ΅ ΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ° ΡΠ°ΠΉΠ»Π°. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΡΠΈΠΌΠ΅Ρ ΠΌΠ΅Π½Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π° ΡΠΈΡ. Π.1
ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΡΡΠ½ΠΊΡΠΈΠΈ:
ΠΎΡΠΊΡΡΡΠΈΠ΅ ΡΠ°ΠΉΠ»Π° Π² ΡΠΎΡΠΌΠ°ΡΠ΅ TGA (Π€Π°ΠΉΠ» — > ΠΡΠΊΡΡΡΡ TGA);
ΠΎΡΠΊΡΡΡΠΈΠ΅ ΡΠ°ΠΉΠ»Π° Π² ΡΠΎΡΠΌΠ°ΡΠ΅ BMP (Π€Π°ΠΉΠ» — > ΠΡΠΊΡΡΡΡ BMP);
ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° Π² ΡΠΎΡΠΌΠ°Ρ BMP (Π€Π°ΠΉΠ» — > Π‘ΠΎΡ ΡΠ°Π½ΠΈΡΡ ΠΊΠ°ΠΊ BMP);
ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠΈΠ»ΡΡΡΠ° (ΠΡΡΠ΅ΠΊΡΡ — > ΠΡΡΠΈΠ»ΡΡΡΠΎΠ²Π°ΡΡ ΡΠΈΠ»ΡΡΡΠΎΠΌ);
Π·Π°ΡΡΠΌΠΈΡΡ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ B (ΠΡΡΠ΅ΠΊΡΡ — >ΠΠ°ΡΡΠΌΠΈΡΡ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ B);
Π·Π°ΡΡΠΌΠΈΡΡ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ S (ΠΡΡΠ΅ΠΊΡΡ — > ΠΠ°ΡΡΠΌΠΈΡΡ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ S);
Π²ΡΡ ΠΎΠ΄ ΠΈΠ· ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ (Π€Π°ΠΉΠ» — > ΠΡΡ ΠΎΠ΄);
ΠΏΡΠΎΡΠΌΠΎΡΡ ΠΎΡΠΊΡΡΡΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ TGA ΡΠ°ΠΉΠ»Π° (ΠΡΠΎΡΠΌΠΎΡΡ->TGA ΡΠ°ΠΉΠ»);
ΠΏΡΠΎΡΠΌΠΎΡΡ ΠΎΡΠΊΡΡΡΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ BMP ΡΠ°ΠΉΠ»Π° (ΠΡΠΎΡΠΌΠΎΡΡ->BMP ΡΠ°ΠΉΠ»);
ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ (Π‘ΠΏΡΠ°Π²ΠΊΠ° — > Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅)
Π ΠΈΡΡΠ½ΠΎΠΊ Π.1 — ΠΠ»Π°Π²Π½ΠΎΠ΅ ΠΌΠ΅Π½Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
ΠΡΠ²ΠΎΠ΄ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π² Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
ΠΠΈΡΡΠΈΠ½Π³ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
#include
#include
#include
using namespace std;
class KDib {
public:
BYTE* aBitmapBits; // ΠΌΠ°ΡΡΠΈΠ² ΠΏΠΈΠΊΡΠ΅Π»ΠΎΠ²
KDib ();
~KDib ();
BOOL CreateDib24 (int w, int h, const char* fileName);
void StoreDib24 ();
BOOL LoadFromFile (const char* fileName);
void SetPixel (int x, int y, COLORREF color);
int Draw (HDC hdc, int xDst, int yDst, int wDst, int hDst,
int xSrc, int ySrc, int wSrc, int hSrc, DWORD rop);
int GetWidth () { return width; }
int GetHeight () { return height; }
const char* GetError () { return error. c_str (); }
private:
int width;
int height;
int bytesPerLine;
BITMAPFILEHEADER fileHead; // Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΡΠ°ΡΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°
BITMAPINFOHEADER infoHead; // Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°
BITMAPINFOHEADER* pInfoHead;
int fileHeadSize;
int infoHeadSize;
int imageSize;
string error;
ofstream outFile;
};
class Tga {
private:
char idlength;
char colourmaptype;
char datatypecode;
short int colourmaporigin;
short int colourmaplength;
char colourmapdepth;
short int x_origin;
short int y_origin;
short width;
short height;
char bitsperpixel;
char imagedescriptor;
int imageSize;
string error;
ofstream outFile;
public:
BYTE* aBitmapBits; // ΠΌΠ°ΡΡΠΈΠ² ΠΏΠΈΠΊΡΠ΅Π»ΠΎΠ²
BYTE* aBitmapHLS; // ΠΌΠ°ΡΡΠΈΠ² ΠΏΠΈΠΊΡΠ΅Π»ΠΎΠ²
Tga ();
~Tga ();
int GetWidth () { return width; }
int GetHeight () { return height; }
BOOL LoadFromFile (char* fileName);
void Draw (HDC hdc, BYTE* aBitmapBits);
void RgbToHls ();
void HlsToRgb ();
void NoiseB ();
void NoiseS ();
void Filter ();
void TransformPix (int x, int y);
BYTE* GetA ();
};
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
// KWnd. h
#include
class KWnd {
public:
KWnd (LPCTSTR windowName, HINSTANCE hInst, int cmdShow,
LRESULT (WINAPI *pWndProc) (HWND, UINT, WPARAM, LPARAM),
LPCTSTR menuName = NULL,
int x = CW_USEDEFAULT, int y = 0, int width = CW_USEDEFAULT, int height = 0, UINT classStyle = CS_HREDRAW | CS_VREDRAW,
DWORD windowStyle = WS_OVERLAPPEDWINDOW,
HWND hParent = NULL);
HWND GetHWnd () { return hWnd; }
protected:
HWND hWnd;
WNDCLASSEX wc;
};
// {{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by TgaToBmp1. rc
#define IDR_MENU1 101
#define ID_40 001 40 001
#define ID_40 002 40 002
#define ID_40 003 40 003
#define ID_40 004 40 004
#define ID_40 005 40 005
#define ID_40 006 40 006
#define ID_40 007 40 007
#define ID_40 008 40 008
#define ID_40 009 40 009
#define ID_40 010 40 010
#define ID_40 011 40 011
#define ID_40 012 40 012
// Next default values for new objects
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 102
#define _APS_NEXT_COMMAND_VALUE 40 013
#define _APS_NEXT_CONTROL_VALUE 1001
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
// KWnd. cpp
#include «KWnd. h»
#include «resource1. h»
KWnd: KWnd (LPCTSTR windowName, HINSTANCE hInst, int cmdShow,
LRESULT (WINAPI *pWndProc) (HWND, UINT, WPARAM, LPARAM),
LPCTSTR menuName, int x, int y, int width, int height,
UINT classStyle, DWORD windowStyle, HWND hParent)
{
char szClassName [] = «KWndClass» ;
wc. cbSize = sizeof (wc);
wc. style = classStyle;
wc. lpfnWndProc = pWndProc;
wc. cbClsExtra = 0;
wc. cbWndExtra = 0;
wc. hInstance = hInst;
wc. hIcon = LoadIcon (NULL, IDI_APPLICATION);
wc. hCursor = LoadCursor (NULL, IDC_ARROW);
wc. hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);
wc. lpszMenuName = MAKEINTRESOURCE (IDR_MENU1); // menuName;
wc. lpszClassName = szClassName;
wc. hIconSm = LoadIcon (NULL, IDI_APPLICATION);
// Π Π΅Π³ΠΈΡΡΡΠΈΡΡΠ΅ΠΌ ΠΊΠ»Π°ΡΡ ΠΎΠΊΠ½Π°
if (! RegisterClassEx (&wc)) {
char msg = «Cannot register class: «;
strcat (msg, szClassName);
MessageBox (NULL, msg, «Error», MB_OK);
return;
}
width=640; height=480;
// Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠΊΠ½ΠΎ
hWnd = CreateWindow (szClassName, windowName, windowStyle,
x, y, width, height, hParent, (HMENU) NULL, hInst, NULL);
if (! hWnd) {
char text = «Cannot create window: «;
strcat (text, windowName);
MessageBox (NULL, text, «Error», MB_OK);
return;
}
// ΠΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΠΎΠΊΠ½ΠΎ
ShowWindow (hWnd, cmdShow);
}
// KDib. cpp
#include «KDib. h»
#include
KDib: KDib () {
fileHeadSize = sizeof (BITMAPFILEHEADER);
fileHead. bfType = 0x4d42;
aBitmapBits = NULL;
}
KDib: ~KDib () {
if (pInfoHead) delete [] pInfoHead;
if (aBitmapBits) delete [] aBitmapBits;
if (outFile) outFile. close ();
}
BOOL KDib: CreateDib24 (int w, int h, const char* fileName) ios: trunc);
if (! outFile) return FALSE;
else return TRUE;
BOOL KDib: LoadFromFile (const char* fileName) {
ifstream inpFile;
inpFile. open (fileName, ios: in | ios: binary);
if (! inpFile) {
error = «ΠΠ΅Π²Π΅ΡΠ½ΠΎΠ΅ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° ΠΈΠ»ΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°. «;
return FALSE;
}
inpFile. read ((char*) &fileHead, fileHeadSize);
if (fileHead. bfType! = 0x4d42) {
error = «ΠΡΠΎ Π½Π΅ BMP-ΡΠ°ΠΉΠ»» ;
return FALSE;
}
infoHeadSize = fileHead. bfOffBits — fileHeadSize;
int fileSize = fileHead. bfSize;
imageSize = fileSize — (fileHeadSize + infoHeadSize);
pInfoHead = (BITMAPINFOHEADER*) (new BYTE [infoHeadSize]);
inpFile. read ((char*) pInfoHead, infoHeadSize);
width =pInfoHead->biWidth;
height = pInfoHead->biHeight;
aBitmapBits = new BYTE [imageSize];
inpFile. read ((char*) aBitmapBits, imageSize);
return true;
}
int KDib: Draw (HDC hdc, int xDst, int yDst, int wDst, int hDst,
int xSrc, int ySrc, int wSrc, int hSrc, DWORD rop) {
return StretchDIBits (hdc, xDst, yDst, wDst, hDst, xSrc, ySrc, wSrc, hSrc,
aBitmapBits, (CONST BITMAPINFO*) pInfoHead, DIB_RGB_COLORS, rop);
}
void KDib: SetPixel (int x, int y, COLORREF color) {
int row = y;
int col = 3 * x;
aBitmapBits [row*bytesPerLine + col] = GetBValue (color);
aBitmapBits [row*bytesPerLine + col+1] = GetGValue (color);
aBitmapBits [row*bytesPerLine + col+2] = GetRValue (color);
}
void KDib: StoreDib24 () {
// ΠΠ°ΠΏΠΈΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° BMP-ΡΠ°ΠΉΠ»Π°
outFile. write ((char*) &fileHead, fileHeadSize);
outFile. write ((char*) &infoHead, infoHeadSize);
// ΠΠ°ΠΏΠΈΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ
outFile. write ((char*) aBitmapBits, imageSize);
}
Tga: Tga () {
aBitmapBits = NULL;
idlength='0';
colourmaptype='0';
datatypecode='0';
colourmaporigin=0;
colourmaplength=0;
colourmapdepth='0';
x_origin=0;
y_origin=0;
width=0;
height=0;
bitsperpixel='0';
imagedescriptor='0';
imageSize=0;
}
Tga: ~Tga () {}
BOOL Tga: LoadFromFile (char* fileName) {
ifstream inpFile;
inpFile. open (fileName, ios: in | ios: binary);
if (! inpFile) {
error = «ΠΠ΅Π²Π΅ΡΠ½ΠΎΠ΅ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° ΠΈΠ»ΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°. «;
return FALSE;
}
inpFile. read ((char*) &idlength, 1);
inpFile. read ((char*) &colourmaptype, 1);
inpFile. read ((char*) &datatypecode, 1);
inpFile. read ((char*) &colourmaporigin, 2);
inpFile. read ((char*) &colourmaplength, 2);
inpFile. read ((char*) &colourmapdepth, 1);
inpFile. read ((char*) &x_origin, 2);
inpFile. read ((char*) &y_origin, 2);
inpFile. read ((char*) &width, 2);
inpFile. read ((char*) &height, 2);
inpFile. read ((char*) &bitsperpixel, 1);
inpFile. read ((char*) &imagedescriptor, 1);
imageSize = width * height*3;
aBitmapBits = new BYTE [imageSize];
inpFile. read ((char*) aBitmapBits, imageSize);
inpFile. close ();
return true;
}
void Tga: Draw (HDC hdc, BYTE* aBitmapBits) {
int x = GetWidth ();
int y = GetHeight ();
int bytesPerLine = ((x * 24 + 31) / 32) * 4;
for (int row = 0; row < y; row++)
for (int col = 0; col < x; col++) {
SetPixel (hdc, col, row, RGB (aBitmapBits [row*bytesPerLine + col*3+2],
aBitmapBits [row*bytesPerLine + (col*3) +1],
aBitmapBits [row*bytesPerLine + (col*3)]));
}
}
BYTE* Tga: GetA () {
return aBitmapBits;
}
void Tga: RgbToHls () {
BYTE R, G, B, H, L, S;
int x = GetWidth ();
int y = GetHeight ();
int bytesPerLine = ((x * 24 + 31) / 32) * 4;
imageSize = x * y * 3;
aBitmapHLS = new BYTE [imageSize];
for (int row = 0; row < y; row++)
for (int col = 0; col < x; col++) {
R = aBitmapBits [row*bytesPerLine + col*3 + 2];
G = aBitmapBits [row*bytesPerLine + (col*3) + 1];
B = aBitmapBits [row*bytesPerLine + (col*3)];
S = (BYTE) sqrt ((double) (R*R + G*G + B*B — R*G — B*G — R*B));
L = (R + G + B) /3;
H = (BYTE) asin (sqrt (3.0/2.0) * (G — R) / S);
aBitmapHLS [row*bytesPerLine + (col*3)] = S;
aBitmapHLS [row*bytesPerLine + (col*3) + 1] = L;
aBitmapHLS [row*bytesPerLine + col*3 + 2] = H;
}
}
void Tga: HlsToRgb () {
BYTE R, G, B, H, L, S;
int x = GetWidth ();
int y = GetHeight ();
int bytesPerLine = ((x * 24 + 31) / 32) * 4;
for (int row = 0; row < y; row++)
for (int col = 0; col < x; col++) {
H = aBitmapHLS [row*bytesPerLine + col*3 + 2];
L = aBitmapHLS [row*bytesPerLine + (col*3) + 1];
S = aBitmapHLS [row*bytesPerLine + (col*3)];
R = L — (1/3) *S*cos ((double) H) — (1/sqrt (3.0)) *S*sin ((double) H);
G = L + (2/3) *S*cos ((double) H);
B = L — (1/3) *S*cos ((double) H) + (1/sqrt (3.0)) *S*sin ((double) H);
aBitmapBits [row*bytesPerLine + (col*3)] = B;
aBitmapBits [row*bytesPerLine + (col*3) + 1] = G;
aBitmapBits [row*bytesPerLine + col*3 + 2] = R;
}
}
void Tga: NoiseB () {
BYTE B;
int x = GetWidth ();
int y = GetHeight ();
int bytesPerLine = ((x * 24 + 31) / 32) * 4;
for (int row = 0; row < y; row++)
for (int col = 0; col < x; col++) {
B = aBitmapBits [row*bytesPerLine + (col*3)];
B+=rand ();
if (B < 0) B = 0;
if (B > 255) B = 255;
aBitmapBits [row*bytesPerLine + (col*3)] = B;
}
}
void Tga: NoiseS () {
BYTE S;
int x = GetWidth ();
int y = GetHeight ();
int bytesPerLine = ((x * 24 + 31) / 32) * 4;
for (int row = 0; row < y; row++)
for (int col = 0; col < x; col++) {
S = aBitmapHLS [row*bytesPerLine + (col*3)];
S+=rand ();
if (S < 0) S = 0;
if (S > 255) S = 255;
aBitmapHLS [row*bytesPerLine + (col*3)] = S;
}
}
void Tga: TransformPix (int x, int y) {
BYTE NewBGR [3];
int Pixel [3];
BYTE Pix [3];
int w = GetWidth ();
int h = GetHeight ();
int count = 9;
int Matrix ={1,1,1,1,1,1,1,1,1};
int bytesPerLine = ((w * 24 + 31) / 32) * 4;
// x y
for (int c = 0; c < 3; c++) {
NewBGR [c] = aBitmapBits [y*bytesPerLine + x*3 + c];
Pixel [c] = NewBGR [c] * Matrix [4];
}
// x-1 y-1
for (int c = 0; c < 3; c++) {
NewBGR [c] = aBitmapBits [ (y-1) *bytesPerLine + (x-1) *3 + c];
Pixel [c] += NewBGR [c] * Matrix [0];
}
// x y-1
for (int c = 0; c < 3; c++) {
NewBGR [c] = aBitmapBits [y*bytesPerLine + (x-1) *3 + c];
Pixel [c] += NewBGR [c] * Matrix [1];
}
// x+1 y-1
for (int c = 0; c < 3; c++) {
NewBGR [c] = aBitmapBits [ (y+1) *bytesPerLine + (x-1) *3 + c];
Pixel [c] += NewBGR [c] * Matrix [2];
}
// x+1 y
for (int c = 0; c < 3; c++) {
NewBGR [c] = aBitmapBits [ (y+1) *bytesPerLine + x*3 + c];
Pixel [c] += NewBGR [c] * Matrix [5];
}
// x+1 y+1
for (int c = 0; c < 3; c++) {
NewBGR [c] = aBitmapBits [ (y+1) *bytesPerLine + (x+1) *3 + c];
Pixel [c] += NewBGR [c] * Matrix [8];
}
// x y+1
for (int c = 0; c < 3; c++) {
NewBGR [c] = aBitmapBits [y*bytesPerLine + (x+1) *3 + c];
Pixel [c] += NewBGR [c] * Matrix [7];
}
// x-1 y+1
for (int c = 0; c < 3; c++) {
NewBGR [c] = aBitmapBits [ (y-1) *bytesPerLine + (x+1) *3 + c];
Pixel [c] += NewBGR [c] * Matrix [6];
}
// x-1 y
for (int c = 0; c < 3; c++) {
NewBGR [c] = aBitmapBits [ (y-1) *bytesPerLine + x*3 + c];
Pixel [c] += NewBGR [c] * Matrix [3];
}
for (int c = 0; c < 3; c++) {
if (count! =0)
Pixel [c] = Pixel [c] /count;
Pix [c] = BYTE (Pixel [c]);
if (Pix [c] < 0)
Pix [c] = 0;
else if (Pix [c] > 255)
Pix [c] =255;
aBitmapHLS [y*bytesPerLine + x*3 + c] = Pix [c];
}
}
void Tga: Filter () {
int w = GetWidth ();
int h = GetHeight ();
imageSize = w * h * 4;
aBitmapHLS = new BYTE [imageSize];
for (int y = 1; y < h-1; y++)
for (int x = 1; x < w-1; x++) {
TransformPix (x, y);
}
aBitmapBits = aBitmapHLS;
}
// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //
// TgaToBmp. cpp
#include
#include
#include «KWnd. h»
#include «KDib. h»
#include «resource1. h»
KDib bmp;
Tga tga;
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);
// ====================================================
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
MSG msg;
KWnd mainWnd («TgaToBmp», hInstance, nCmdShow, WndProc);
while (GetMessage (&msg, NULL, 0, 0)) {
TranslateMessage (&msg);
DispatchMessage (&msg);
}
return msg. wParam;
}
// ====================================================