ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² Π±ΠΈΠ½Π°ΡΠ½ΡΠΉ ΠΊΠΎΠ΄
ΠΠ΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ JPEG Π΄Π»Ρ ΡΠ°ΠΉΠ½ΠΈΠΊΠΎΠ²
[FF D8]
ΠΠ°ΠΌ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡΠ΄Ρ Ρ ΠΎΡΠ΅Π»ΠΎΡΡ ΡΠ·Π½Π°ΡΡ ΠΊΠ°ΠΊ ΡΡΡΡΠΎΠ΅Π½ jpg-ΡΠ°ΠΉΠ»? Π‘Π΅ΠΉΡΠ°Ρ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌΡΡ! ΠΡΠΎΠ³ΡΠ΅Π²Π°ΠΉΡΠ΅ Π²Π°Ρ Π»ΡΠ±ΠΈΠΌΡΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΈ hex-ΡΠ΅Π΄Π°ΠΊΡΠΎΡ, Π±ΡΠ΄Π΅ΠΌ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎ:
Π‘ΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ Π²Π·ΡΠ» ΡΠΈΡΡΠ½ΠΎΠΊ ΠΏΠΎΠΌΠ΅Π½ΡΡΠ΅. ΠΡΠΎ Π·Π½Π°ΠΊΠΎΠΌΡΠΉ, Π½ΠΎ ΡΠΈΠ»ΡΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΆΠ°ΡΡΠΉ favicon ΠΡΠ³Π»Π°:
ΠΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΏΡΠΎΡΠ΅Π½ΠΎ, ΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π½Π΅ ΠΏΠΎΠ»Π½Π°Ρ, Π½ΠΎ Π·Π°ΡΠΎ ΠΏΠΎΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ½ΡΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ.
ΠΠ°ΠΆΠ΅ Π½Π΅ Π·Π½Π°Ρ, ΠΊΠ°ΠΊ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΌΡ ΡΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΊΠΎΠ΅-ΡΡΠΎ ΠΈΠ·Π²Π»Π΅ΡΡ ΠΈΠ· ΡΠ°ΠΉΠ»Π°.
[FF D8] β ΠΌΠ°ΡΠΊΠ΅Ρ Π½Π°ΡΠ°Π»Π°. ΠΠ½ Π²ΡΠ΅Π³Π΄Π° Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² Π½Π°ΡΠ°Π»Π΅ Π²ΡΠ΅Ρ jpg-ΡΠ°ΠΉΠ»ΠΎΠ².
Π‘Π»Π΅Π΄ΠΎΠΌ ΠΈΠ΄ΡΡ Π±Π°ΠΉΡΡ [FF FE]. ΠΡΠΎ ΠΌΠ°ΡΠΊΠ΅Ρ, ΠΎΠ·Π½Π°ΡΠ°ΡΡΠΈΠΉ Π½Π°ΡΠ°Π»ΠΎ ΡΠ΅ΠΊΡΠΈΠΈ Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΌ. Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ 2 Π±Π°ΠΉΡΠ° [00 04] β Π΄Π»ΠΈΠ½Π° ΡΠ΅ΠΊΡΠΈΠΈ (Π²ΠΊΠ»ΡΡΠ°Ρ ΡΡΠΈ 2 Π±Π°ΠΉΡΠ°). ΠΠ½Π°ΡΠΈΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π΄Π²ΡΡ [3A 29] β ΡΠ°ΠΌ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ. ΠΡΠΎ ΠΊΠΎΠ΄Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² «:» ΠΈ «)», Ρ.Π΅. ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ ΡΠΌΠ°ΠΉΠ»ΠΈΠΊΠ°. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π΅Π³ΠΎ Π² ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ ΠΏΡΠ°Π²ΠΎΠΉ ΡΠ°ΡΡΠΈ hex-ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ°.
ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΎΡΠΈΠΈ
ΠΠ°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ ΠΏΠΎΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎ, Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ ΡΠ°ΡΡΡΠΌΠΈ:
ΠΠ°ΠΆΠ΄ΡΠΉ Π±Π»ΠΎΠΊ Yij, Cbij, Crij β ΡΡΠΎ ΠΌΠ°ΡΡΠΈΡΠ° ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠΎΠ² ΠΠΠ (ΡΠ°ΠΊ ΠΆΠ΅ 8×8), Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΠΊΠΎΠ΄Π°ΠΌΠΈ Π₯Π°ΡΡΠΌΠ°Π½Π°. Π ΡΠ°ΠΉΠ»Π΅ ΠΎΠ½ΠΈ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π² ΡΠ°ΠΊΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅: Y00Y10Y01Y11Cb00Cr00Y20.
Π§ΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π°
Π€Π°ΠΉΠ» ΠΏΠΎΠ΄Π΅Π»Π΅Π½ Π½Π° ΡΠ΅ΠΊΡΠΎΡΡ, ΠΏΡΠ΅Π΄Π²Π°ΡΡΠ΅ΠΌΡΠ΅ ΠΌΠ°ΡΠΊΠ΅ΡΠ°ΠΌΠΈ. ΠΠ°ΡΠΊΠ΅ΡΡ ΠΈΠΌΠ΅ΡΡ Π΄Π»ΠΈΠ½Ρ 2 Π±Π°ΠΉΡΠ°, ΠΏΡΠΈΡΠ΅ΠΌ ΠΏΠ΅ΡΠ²ΡΠΉ Π±Π°ΠΉΡ [FF]. ΠΠΎΡΡΠΈ Π²ΡΠ΅ ΡΠ΅ΠΊΡΠΎΡΡ Ρ ΡΠ°Π½ΡΡ ΡΠ²ΠΎΡ Π΄Π»ΠΈΠ½Ρ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΡ 2 Π±Π°ΠΉΡΠ° ΠΏΠΎΡΠ»Π΅ ΠΌΠ°ΡΠΊΠ΅ΡΠ°. ΠΠ»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΈΠΌ ΠΌΠ°ΡΠΊΠ΅ΡΡ:
ΠΠ°ΡΠΊΠ΅Ρ [FF DB]: DQT β ΡΠ°Π±Π»ΠΈΡΠ° ΠΊΠ²Π°Π½ΡΠΎΠ²Π°Π½ΠΈΡ
ΠΡΡΠ°Π²ΡΠΈΠΌΠΈΡΡ 64-ΠΌΡ Π±Π°ΠΉΡΠ°ΠΌΠΈ Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ°Π±Π»ΠΈΡΡ 8×8.
ΠΡΠΈΠ³Π»ΡΠ΄ΠΈΡΠ΅ΡΡ, Π² ΠΊΠ°ΠΊΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ°Π±Π»ΠΈΡΡ. ΠΡΠΎΡ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ zigzag order:
ΠΠ°ΡΠΊΠ΅Ρ [FF C0]: SOF0 β Baseline DCT
ΠΡΠΎΡ ΠΌΠ°ΡΠΊΠ΅Ρ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ SOF0, ΠΈ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΎ Π±Π°Π·ΠΎΠ²ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ. ΠΠ½ ΠΎΡΠ΅Π½Ρ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½. ΠΠΎ Π² ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ΅Π½ Π·Π½Π°ΠΊΠΎΠΌΡΠΉ Π²Π°ΠΌ progressive-ΠΌΠ΅ΡΠΎΠ΄, ΠΊΠΎΠ³Π΄Π° ΡΠ½Π°ΡΠ°Π»Π° Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Ρ Π½ΠΈΠ·ΠΊΠΈΠΌ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ, Π° ΠΏΠΎΡΠΎΠΌ ΠΈ Π½ΠΎΡΠΌΠ°Π»ΡΠ½Π°Ρ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ°. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ½ΡΡΡ ΡΡΠΎ ΡΠ°ΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΎ, Π½Π΅ Π΄ΠΎΠΆΠΈΠ΄Π°ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ. Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π΅ΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ, ΠΊΠ°ΠΊ ΠΌΠ½Π΅ ΠΊΠ°ΠΆΠ΅ΡΡΡ, Π½Π΅ ΠΎΡΠ΅Π½Ρ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ².
ΠΠ°Ρ ΠΎΠ΄ΠΈΠΌ Hmax=2 ΠΈ Vmax=2. ΠΠ°Π½Π°Π» i Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΡΠ΅ΠΆΠ΅Π½ Π² Hmax/Hi ΡΠ°Π· ΠΏΠΎ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΠΈ ΠΈ Vmax/Vi ΡΠ°Π· ΠΏΠΎ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΠΈ.
ΠΠ°ΡΠΊΠ΅Ρ [FF C4]: DHT (ΡΠ°Π±Π»ΠΈΡΠ° Π₯Π°ΡΡΠΌΠ°Π½Π°)
ΠΡΠ° ΡΠ΅ΠΊΡΠΈΡ Ρ ΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄Ρ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π₯Π°ΡΡΠΌΠ°Π½Π°.
Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ 16 Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ:
ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠ΄ΠΎΠ² ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠ΄ΠΎΠ² ΡΠ°ΠΊΠΎΠΉ Π΄Π»ΠΈΠ½Ρ. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΠ΅ΠΊΡΠΈΡ Ρ
ΡΠ°Π½ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»ΠΈΠ½Ρ ΠΊΠΎΠ΄ΠΎΠ², Π° Π½Π΅ ΡΠ°ΠΌΠΈ ΠΊΠΎΠ΄Ρ. ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π½Π°ΠΉΡΠΈ ΠΊΠΎΠ΄Ρ ΡΠ°ΠΌΠΈ. ΠΡΠ°ΠΊ, Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠ΄ Π΄Π»ΠΈΠ½Ρ 1 ΠΈ ΠΎΠ΄ΠΈΠ½ β Π΄Π»ΠΈΠ½Ρ 2. ΠΡΠΎΠ³ΠΎ 2 ΠΊΠΎΠ΄Π°, Π±ΠΎΠ»ΡΡΠ΅ ΠΊΠΎΠ΄ΠΎΠ² Π² ΡΡΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅ Π½Π΅Ρ.
Π‘ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π² ΡΠ°ΠΉΠ»Π΅ ΠΎΠ½ΠΈ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Ρ ΡΠ»Π΅Π΄ΠΎΠΌ. ΠΠ½Π°ΡΠ΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠ±Π°ΠΉΡΠΎΠ²ΡΠ΅, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠΈΡΠ°Π΅ΠΌ 2 Π±Π°ΠΉΡΠ°:
ΠΠ°Π»Π΅Π΅ Π² ΡΠ°ΠΉΠ»Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΈΠ΄Π΅ΡΡ Π΅ΡΠ΅ 3 ΠΌΠ°ΡΠΊΠ΅ΡΠ° [FF C4], Ρ ΠΏΡΠΎΠΏΡΡΡ ΡΠ°Π·Π±ΠΎΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΡΠ΅ΠΊΡΠΈΠΉ, ΠΎΠ½ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ΅Π½ Π²ΡΡΠ΅ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌΡ.
ΠΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ Π΄Π΅ΡΠ΅Π²Π° ΠΊΠΎΠ΄ΠΎΠ² Π₯Π°ΡΡΠΌΠ°Π½Π°
ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΡΡΡΠΎΠΈΡΡ Π±ΠΈΠ½Π°ΡΠ½ΠΎΠ΅ Π΄Π΅ΡΠ΅Π²ΠΎ ΠΏΠΎ ΡΠ°Π±Π»ΠΈΡΠ΅, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ Π² ΡΠ΅ΠΊΡΠΈΠΈ DHT. Π ΡΠΆΠ΅ ΠΏΠΎ ΡΡΠΎΠΌΡ Π΄Π΅ΡΠ΅Π²Ρ ΠΌΡ ΡΠ·Π½Π°Π΅ΠΌ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠΎΠ΄. ΠΠ½Π°ΡΠ΅Π½ΠΈΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π² ΡΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, Π² ΠΊΠ°ΠΊΠΎΠΌ ΡΠΊΠ°Π·Π°Π½Ρ Π² ΡΠ°Π±Π»ΠΈΡΠ΅. ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΠΏΡΠΎΡΡ: Π² ΠΊΠ°ΠΊΠΎΠΌ Π±Ρ ΡΠ·Π»Π΅ ΠΌΡ Π½ΠΈ Π½Π°Ρ ΠΎΠ΄ΠΈΠ»ΠΈΡΡ, Π²ΡΠ΅Π³Π΄Π° ΠΏΡΡΠ°Π΅ΠΌΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² Π»Π΅Π²ΡΡ Π²Π΅ΡΠ²Ρ. Π Π΅ΡΠ»ΠΈ ΠΎΠ½Π° Π·Π°Π½ΡΡΠ°, ΡΠΎ Π² ΠΏΡΠ°Π²ΡΡ. Π Π΅ΡΠ»ΠΈ ΠΈ ΡΠ°ΠΌ Π½Π΅Ρ ΠΌΠ΅ΡΡΠ°, ΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ Π½Π° ΡΡΠΎΠ²Π΅Π½Ρ Π²ΡΡΠ΅, ΠΈ ΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΠΎΡΡΡΠ΄Π°. ΠΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡΡ Π½ΡΠΆΠ½ΠΎ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΡΠ°Π²Π½ΠΎΠΌ Π΄Π»ΠΈΠ½Π΅ ΠΊΠΎΠ΄Π°. ΠΠ΅Π²ΡΠΌ Π²Π΅ΡΠ²ΡΠΌ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 0, ΠΏΡΠ°Π²ΡΠΌ β 1.
ΠΠ΅ΡΠ΅Π²ΡΡ Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΠ°Π±Π»ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
Π ΠΊΡΡΠΆΠΊΠ°Ρ β Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ΄ΠΎΠ², ΠΏΠΎΠ΄ ΠΊΡΡΠΆΠΊΠ°ΠΌΠΈ β ΡΠ°ΠΌΠΈ ΠΊΠΎΠ΄Ρ (ΠΏΠΎΡΡΠ½Ρ, ΡΡΠΎ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΠΈΡ , ΠΏΡΠΎΠΉΠ΄Ρ ΠΏΡΡΡ ΠΎΡ Π²Π΅ΡΡΠΈΠ½Ρ Π΄ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ·Π»Π°). ΠΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠΎΠ΄Π°ΠΌΠΈ Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΎ ΡΠ°ΠΌΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠΈΡΡΠ½ΠΊΠ°.
ΠΠ°ΡΠΊΠ΅Ρ [FF DA]: SOS (Start of Scan)
ΠΠ°ΠΉΡ [DA] Π² ΠΌΠ°ΡΠΊΠ΅ΡΠ΅ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ β Β«ΠΠ! ΠΠ°ΠΊΠΎΠ½Π΅Ρ-ΡΠΎ ΡΠΎ ΠΌΡ ΠΏΠ΅ΡΠ΅ΡΠ»ΠΈ ΠΊ ΡΠΈΠ½Π°Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΠΊΡΠΈΠΈ!Β». ΠΠ΄Π½Π°ΠΊΠΎ ΡΠ΅ΠΊΡΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ½ΠΎ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ SOS.
[00], [3F], [00] β Start of spectral or predictor selection, End of spectral selection, Successive approximation bit position. ΠΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ΅ΡΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΆΠΈΠΌΠ°, ΡΡΠΎ Π²ΡΡ ΠΎΠ΄ΠΈΡ Π·Π° ΡΠ°ΠΌΠΊΠΈ ΡΡΠ°ΡΡΠΈ.
ΠΡΡΡΠ΄Π° ΠΈ Π΄ΠΎ ΠΊΠΎΠ½ΡΠ° (ΠΌΠ°ΡΠΊΠ΅ΡΠ° [FF D9]) Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅.
ΠΠ°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅
ΠΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½ΡΠΆΠ½ΠΎ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΊΠ°ΠΊ Π±ΠΈΡΠΎΠ²ΡΠΉ ΠΏΠΎΡΠΎΠΊ. ΠΠ΅ΡΠ²ΡΡ 33 Π±ΠΈΡ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΠΏΠ΅ΡΠ²ΡΡ ΡΠ°Π±Π»ΠΈΡΡ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠΎΠ²:
ΠΠ°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ DC-ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠ°
1) Π§ΠΈΡΠ°Π΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π±ΠΈΡΠΎΠ² (Π΅ΡΠ»ΠΈ Π²ΡΡΡΠ΅ΡΠΈΠΌ 2 Π±Π°ΠΉΡΠ° [FF 00], ΡΠΎ ΡΡΠΎ Π½Π΅ ΠΌΠ°ΡΠΊΠ΅Ρ, Π° ΠΏΡΠΎΡΡΠΎ Π±Π°ΠΉΡ [FF]). ΠΠΎΡΠ»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π±ΠΈΡΠ° ΡΠ΄Π²ΠΈΠ³Π°Π΅ΠΌΡΡ ΠΏΠΎ Π΄Π΅ΡΠ΅Π²Ρ Π₯Π°ΡΡΠΌΠ°Π½Π° (Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ) ΠΏΠΎ Π²Π΅ΡΠ²ΠΈ 0 ΠΈΠ»ΠΈ 1, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΏΡΠΎΡΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ Π±ΠΈΡΠ°. ΠΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌΡΡ, Π΅ΡΠ»ΠΈ ΠΎΠΊΠ°Π·Π°Π»ΠΈΡΡ Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΡΠ·Π»Π΅.
2) ΠΠ΅ΡΠ΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ·Π»Π°. ΠΡΠ»ΠΈ ΠΎΠ½ΠΎ ΡΠ°Π²Π½ΠΎ 0, ΡΠΎ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ ΡΠ°Π²Π΅Π½ 0, Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ Π² ΡΠ°Π±Π»ΠΈΡΡ ΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ ΠΊ ΡΡΠ΅Π½ΠΈΡ Π΄ΡΡΠ³ΠΈΡ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠΎΠ². Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ β 02. ΠΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ β Π΄Π»ΠΈΠ½Π° ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠ° Π² Π±ΠΈΡΠ°Ρ . Π’. Π΅. ΡΠΈΡΠ°Π΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ 2 Π±ΠΈΡΠ°, ΡΡΠΎ ΠΈ Π±ΡΠ΄Π΅Ρ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ:
ΠΠ°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ AC-ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠΎΠ²
1) ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ΅Π½ ΠΏ. 1, Π½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ DC ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠ°. ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ ΡΠΈΡΠ°ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ:
2) ΠΠ΅ΡΠ΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ·Π»Π°. ΠΡΠ»ΠΈ ΠΎΠ½ΠΎ ΡΠ°Π²Π½ΠΎ 0, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΎΡΡΠ°Π²ΡΠΈΠ΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡΡ Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΡ Π½ΡΠ»ΡΠΌΠΈ. ΠΠ°Π»ΡΡΠ΅ Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½Π° ΡΠΆΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΠΌΠ°ΡΡΠΈΡΠ°. Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ·Π»Π°: 0x31.
Π§ΠΈΡΠ°ΡΡ AC-ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΡ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠΊΠ° Π½Π΅ Π½Π°ΡΠΊΠ½Π΅ΠΌΡΡ Π½Π° Π½ΡΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, Π»ΠΈΠ±ΠΎ ΠΏΠΎΠΊΠ° Π½Π΅ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΡΡ ΠΌΠ°ΡΡΠΈΡΠ°.
Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ:
ΠΡ Π·Π°ΠΌΠ΅ΡΠΈΠ»ΠΈ, ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Ρ Π² ΡΠΎΠΌ ΠΆΠ΅ Π·ΠΈΠ³Π·Π°Π³ΠΎΠΎΠ±ΡΠ°Π·Π½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅? ΠΡΠΈΡΠΈΠ½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ° ΠΏΡΠΎΡΡΠ°Ρ β ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠ΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ v ΠΈ u, ΡΠ΅ΠΌ ΠΌΠ΅Π½ΡΡΠ΅ΠΉ Π·Π½Π°ΡΠΈΠΌΠΎΡΡΡΡ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ Svu Π² Π΄ΠΈΡΠΊΡΠ΅ΡΠ½ΠΎ-ΠΊΠΎΡΠΈΠ½ΡΡΠ½ΠΎΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΈ. ΠΠΎΡΡΠΎΠΌΡ, ΠΏΡΠΈ Π²ΡΡΠΎΠΊΠΈΡ ΡΡΠ΅ΠΏΠ΅Π½ΡΡ ΡΠΆΠ°ΡΠΈΡ ΠΌΠ°Π»ΠΎΠ·Π½Π°ΡΠ°ΡΠΈΠ΅ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΡ ΠΎΠ±Π½ΡΠ»ΡΡΡ, ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ ΡΠΌΠ΅Π½ΡΡΠ°Ρ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π°.
ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π΅ΡΠ΅ 3 ΠΌΠ°ΡΡΠΈΡΡ Y-ΠΊΠ°Π½Π°Π»Π°β¦
ΠΠΎ! ΠΠ°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ DC-ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΡ β ΡΡΠΎ Π½Π΅ ΡΠ°ΠΌΠΈ DC-ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΡ, Π° ΠΈΡ ΡΠ°Π·Π½ΠΎΡΡΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠ°ΠΌΠΈ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΡΠ°Π±Π»ΠΈΡΡ (ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΊΠ°Π½Π°Π»Π°)! ΠΡΠΆΠ½ΠΎ ΠΏΠΎΠΏΡΠ°Π²ΠΈΡΡ ΠΌΠ°ΡΡΠΈΡΡ:
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠΎΡΡΠ΄ΠΎΠΊ. ΠΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ Π΄ΠΎ ΠΊΠΎΠ½ΡΠ° ΡΠ°ΠΉΠ»Π°.
β¦ ΠΈ ΠΏΠΎ ΠΌΠ°ΡΡΠΈΡΠ΅ Π΄Π»Ρ Cb ΠΈ Cr:
ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΡ
ΠΠ²Π°Π½ΡΠΎΠ²Π°Π½ΠΈΠ΅
ΠΡ ΠΏΠΎΠΌΠ½ΠΈΡΠ΅, ΡΡΠΎ ΠΌΠ°ΡΡΠΈΡΠ° ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ ΡΡΠ°ΠΏ ΠΊΠ²Π°Π½ΡΠΎΠ²Π°Π½ΠΈΡ? ΠΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΡΡ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΡΠ»Π΅Π½Π½ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ½ΠΎΠΆΠΈΡΡ Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΌΠ°ΡΡΠΈΡΡ ΠΊΠ²Π°Π½ΡΠΎΠ²Π°Π½ΠΈΡ. ΠΡΡΠ°Π»ΠΎΡΡ Π²ΡΠ±ΡΠ°ΡΡ Π½ΡΠΆΠ½ΡΡ. Π‘Π½Π°ΡΠ°Π»Π° ΠΌΡ ΠΏΡΠΎΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π»ΠΈ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΊΠ°Π½Π°Π». ΠΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΌΠ°ΡΡΠΈΡΡ ΠΊΠ²Π°Π½ΡΠΎΠ²Π°Π½ΠΈΡ 0 (Ρ Π½Π°Ρ ΠΎΠ½Π° ΠΏΠ΅ΡΠ²Π°Ρ ΠΈΠ· Π΄Π²ΡΡ ). ΠΡΠ°ΠΊ, ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ΅ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ 4 ΠΌΠ°ΡΡΠΈΡΡ Y-ΠΊΠ°Π½Π°Π»Π°:
β¦ ΠΈ ΠΏΠΎ ΠΌΠ°ΡΡΠΈΡΠ΅ Π΄Π»Ρ Cb ΠΈ Cr.
ΠΠ±ΡΠ°ΡΠ½ΠΎΠ΅ Π΄ΠΈΡΠΊΡΠ΅ΡΠ½ΠΎ-ΠΊΠΎΡΠΈΠ½ΡΡΠ½ΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅
Π€ΠΎΡΠΌΡΠ»Π° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ. Svu β Π½Π°ΡΠ° ΠΏΠΎΠ»ΡΡΠ΅Π½Π½Π°Ρ ΠΌΠ°ΡΡΠΈΡΠ° ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠΎΠ². u β ΡΡΠΎΠ»Π±Π΅Ρ, v β ΡΡΡΠΎΠΊΠ°. Cx = 1/β2 Π΄Π»Ρ x = 0, Π° Π² ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΡΠ»ΡΡΠ°ΡΡ = 1. syx β Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠ°Π½Π°Π»ΠΎΠ².
ΠΡΠΈΠ²Π΅Π΄Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ ΠΊΠ°Π½Π°Π»Π° Y (ΠΏΠΎΡΠ»Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠΊΡΡΠ³Π»Π΅Π½ΠΈΡ):
ΠΠΎ Π²ΡΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΈΠ±Π°Π²ΠΈΡΡ ΠΏΠΎ 128, Π° Π·Π°ΡΠ΅ΠΌ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΡ ΠΈΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΎΡ 0 Π΄ΠΎ 255:
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ: 138 β 266 β 255, 92 β 220 β 220 ΠΈ Ρ. Π΄.
YCbCr Π² RGB
4 ΠΌΠ°ΡΡΠΈΡΡ Y, ΠΈ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ Cb ΠΈ Cr, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ ΠΏΡΠΎΡΠ΅ΠΆΠΈΠ²Π°Π»ΠΈ ΠΊΠ°Π½Π°Π»Ρ ΠΈ 4 ΠΏΠΈΠΊΡΠ΅Π»ΡΠΌ Y ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ Cb ΠΈ Cr. ΠΠΎΡΡΠΎΠΌΡ Π²ΡΡΠΈΡΠ»ΡΡΡ ΡΠ°ΠΊ: YCbCrToRGB(Y[y,x], Cb[y/2, x/2], Cr[y/2, x/2]):
ΠΠΎΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ ΡΠ°Π±Π»ΠΈΡΡ Π΄Π»Ρ ΠΊΠ°Π½Π°Π»ΠΎΠ² R, G, B Π΄Π»Ρ Π»Π΅Π²ΠΎΠ³ΠΎ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ° 8×8 Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
ΠΠΎΠ½Π΅Ρ
ΠΠΎΠΎΠ±ΡΠ΅ Ρ Π½Π΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡ ΠΏΠΎ JPEG, ΠΏΠΎΡΡΠΎΠΌΡ Π²ΡΡΠ΄ Π»ΠΈ ΡΠΌΠΎΠ³Ρ ΠΎΡΠ²Π΅ΡΠΈΡΡ Π½Π° Π²ΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ. ΠΡΠΎΡΡΠΎ ΠΊΠΎΠ³Π΄Π° Ρ ΠΏΠΈΡΠ°Π» ΡΠ²ΠΎΠΉ Π΄Π΅ΠΊΠΎΠ΄Π΅Ρ, ΠΌΠ½Π΅ ΡΠ°ΡΡΠΎ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΠ»ΠΎΡΡ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ Π½Π΅ΠΏΠΎΠ½ΡΡΠ½ΡΠΌΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ. Π ΠΊΠΎΠ³Π΄Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠ²ΠΎΠ΄ΠΈΠ»ΠΎΡΡ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ, Ρ Π½Π΅ Π·Π½Π°Π» Π³Π΄Π΅ Π΄ΠΎΠΏΡΡΡΠΈΠ» ΠΎΡΠΈΠ±ΠΊΡ. ΠΠΎΠΆΠ΅Ρ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΏΡΠΎΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠΎΠ²Π°Π» Π±ΠΈΡΡ, Π° ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» ΠΠΠ. ΠΡΠ΅Π½Ρ Π½Π΅ Ρ Π²Π°ΡΠ°Π»ΠΎ ΠΏΠΎΡΠ°Π³ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°, ΠΏΠΎΡΡΠΎΠΌΡ, Π½Π°Π΄Π΅ΡΡΡ, ΡΡΠ° ΡΡΠ°ΡΡΡ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ Π΄Π΅ΠΊΠΎΠ΄Π΅ΡΠ°. ΠΡΠΌΠ°Ρ, ΠΎΠ½Π° ΠΏΠΎΠΊΡΡΠ²Π°Π΅Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°, Π½ΠΎ Π²ΡΠ΅-ΡΠ°Π²Π½ΠΎ Π½Π΅Π»ΡΠ·Ρ ΠΎΠ±ΠΎΠΉΡΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΅ΠΉ. ΠΡΠ΅Π΄Π»Π°Π³Π°Ρ Π²Π°ΠΌ ΡΡΡΠ»ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΌΠΎΠ³Π»ΠΈ ΠΌΠ½Π΅:
ΠΠ°ΡΡΠΈΠ½ΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠ΄ΠΎΠΌ Π½Π° Javascript
ΠΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΎΠ±ΡΡΠ½ΠΎ Ρ ΡΠ°Π½ΡΡΡΡ ΠΊΠ°ΠΊ Π΄Π²ΠΎΠΈΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ, Π° ΡΠ°ΠΉΠ» Javascript ΠΏΠΎ ΡΡΡΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΡΠ½ΡΠΌ ΡΠ΅ΠΊΡΡΠΎΠΌ. ΠΠ±Π° ΡΠΈΠΏΠ° ΡΠ°ΠΉΠ»ΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΌ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ: ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠΌΠ΅ΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΡΠΎΡΠΌΠ°Ρ ΡΠ°ΠΉΠ»Π°, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΊΠΎΠ΄ΠΈΡΡΡΡΠΈΠΉ Π΄Π°Π½Π½ΡΠ΅. ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ°ΠΉΠ»Ρ Javascript ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΈΡΠΏΠΎΠ»Π½ΡΡΡ, ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠΌΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΡ. Π― Π·Π°Π΄Π°Π»ΡΡ Π²ΠΎΠΏΡΠΎΡΠΎΠΌ: ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ°ΠΉΠ» ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΡΠ²Π»ΡΡΡΠΈΠΉΡΡ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠΌ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠΎΠΌ Javascript, ΡΡΠΎΠ±Ρ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΈΡΠΏΠΎΠ»Π½ΡΡΡ?
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Π²Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΠ΅ ΡΡΠ΅Π½ΠΈΠ΅, ΠΊΡΠ°ΠΉΠ½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ ΠΈΠ·ΡΡΠΈΡΡ ΡΡΡ ΠΏΠ΅ΡΠΎΡΠ½ΠΈΡΡ ΠΊΠΎΠ΄Π° Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌΠΈ ΠΌΠΎΠΈΡ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΠ²:
ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΈΠ·ΡΡΠΈΡΡ Π΅Π³ΠΎ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ, ΡΠΎ ΡΠΊΠ°ΡΠ°ΡΡ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡΡΠ΄Π°:
ΠΡΠ±ΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ ΡΠΈΠΏΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π΄Π²ΠΎΠΈΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Javascript Π±ΡΠ΄ΡΡ Π²ΡΠ΄Π°Π²Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΡ. ΠΠΎΡΡΠΎΠΌΡ ΠΌΠΎΡ ΠΏΠ΅ΡΠ²Π°Ρ ΠΌΡΡΠ»Ρ Π·Π°ΠΊΠ»ΡΡΠ°Π»Π°ΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ: ΡΡΠΎ Π΅ΡΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ Π²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ, ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ:
ΠΡΠΎΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΡΠ°ΠΉΠ»Π° ΠΏΡΠΈΠ²ΡΠ» ΠΌΠ΅Π½Ρ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΈΠ΄Π΅Π΅: ΡΡΠΎ Π΅ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π±Π°ΠΉΡΠΎΠ² ΠΊΠ°ΠΊ ΠΈΠΌΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ Π΅ΠΉ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ:
Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠ΅ΠΉ Π±Π°ΠΉΡΠΎΠ² Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°Ρ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ Π½Π΅ΠΏΠ΅ΡΠ°ΡΠ°Π΅ΠΌΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅Π»ΡΠ·Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΈΠΌΠ΅Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ . ΠΠΎ Π΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠΎΡΠΌΠ°Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ: GIF. ΠΠ»ΠΎΠΊ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° GIF ΠΈΠΌΠ΅Π΅Ρ Π²ΠΈΠ΄ 47 49 46 38 39 61, ΡΡΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ Π² ASCII Π² ΡΡΡΠΎΠΊΡ GIF89a β Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎΠ΅ ΠΈΠΌΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ!
ΠΡΠ±ΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π½Π°ΡΠ»ΠΈ ΡΠΎΡΠΌΠ°Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΠΉΡΡ Ρ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π·Π½Π°ΠΊΠ° ΡΠ°Π²Π΅Π½ΡΡΠ²Π° ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π°ΠΏΠΎΡΡΡΠΎΡΠ° (backtick). Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ ΡΠ΅ΡΡΡΡΠΌΡ Π±Π°ΠΉΡΠ°ΠΌΠΈ ΡΠ°ΠΉΠ»Π° Π±ΡΠ΄ΡΡ: 3D 09 60 04
ΠΠ΅ΡΠ²ΡΠ΅ Π±Π°ΠΉΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
Π ΡΠΎΡΠΌΠ°ΡΠ΅ GIF ΡΠ΅ΡΡΡΠ΅ Π±Π°ΠΉΡΠ° ΠΏΠΎΡΠ»Π΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΌΠ΅ΡΡΠΈΡΡ Π² Π½ΠΈΡ 3D (Π·Π½Π°ΠΊ ΡΠ°Π²Π΅Π½ΡΡΠ²Π°) ΠΈ 60 (ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ Π°ΠΏΠΎΡΡΡΠΎΡ, ΠΎΡΠΊΡΡΠ²Π°ΡΡΠΈΠΉ ΡΡΡΠΎΠΊΡ). Π GIF ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎΡΡΠ΄ΠΎΠΊ little endian, ΠΏΠΎΡΡΠΎΠΌΡ Π²ΡΠΎΡΠΎΠΉ ΠΈ ΡΠ΅ΡΠ²ΡΡΡΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΈΠΌΠ΅ΡΡ ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠ΅ Π²Π»ΠΈΡΠ½ΠΈΠ΅ Π½Π° ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. ΠΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡΠ΅, ΡΡΠΎΠ±Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ ΡΠΈΡΠΈΠ½ΠΎΠΉ ΠΈ Π²ΡΡΠΎΡΠΎΠΉ Π² Π΄Π΅ΡΡΡΠΊΠΈ ΡΡΡΡΡ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Ρ ΡΠ°Π½ΠΈΡΡ Π±ΠΎΠ»ΡΡΠΈΠ΅ Π±Π°ΠΉΡΡ 3D ΠΈ 60 Π² Π½Π°ΠΈΠΌΠ΅Π½Π΅Π΅ Π·Π½Π°ΡΠΈΠΌΡΡ Π±Π°ΠΉΡΠ°Ρ .
ΠΠ°ΠΈΠΌΠ΅Π½ΡΡΠΈΠΉ ΠΏΡΠΎΠ±Π΅Π»ΡΠ½ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ» β ΡΡΠΎ 09 (ΡΠΈΠΌΠ²ΠΎΠ» Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ°Π±ΡΠ»ΡΡΠΈΠΈ). ΠΠ½ Π΄Π°ΡΡ Π½Π°ΠΌ ΡΠΈΡΠΈΠ½Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ 3D 09, ΡΡΠΎ Π² little endian ΡΠ°Π²Π½ΠΎ 2365; Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΈΡΠ΅, ΡΠ΅ΠΌ Π±Ρ ΠΌΠ½Π΅ Ρ ΠΎΡΠ΅Π»ΠΎΡΡ, Π½ΠΎ Π²ΡΡ ΡΠ°Π²Π½ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎ.
ΠΠ»Ρ Π²ΡΠΎΡΠΎΠ³ΠΎ Π±Π°ΠΉΡΠ° Π²ΡΡΠΎΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ±ΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π΄Π°ΡΡΠ΅Π΅ Ρ ΠΎΡΠΎΡΠ΅Π΅ ΡΠΎΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΡΠΎΠ½. Π― Π²ΡΠ±ΡΠ°Π» 04, ΡΡΠΎ Π΄Π°ΡΡ Π½Π°ΠΌ Π²ΡΡΠΎΡΡ 60 04, ΠΈΠ»ΠΈ 1120 ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ.
ΠΠ°ΡΠΎΠ²ΡΠ²Π°Π΅ΠΌ Π² ΡΠ°ΠΉΠ» ΡΠΊΡΠΈΠΏΡ
ΠΠΎΠΊΠ° Π½Π°Ρ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ GIF ΠΏΠΎΡΡΠΈ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ. ΠΠ½ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ GIF89a Π΄Π»ΠΈΠ½Π½ΡΡ ΡΡΡΠΎΠΊΡ. ΠΡ Ρ ΠΎΡΠΈΠΌ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΠ»ΠΎ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ΅! ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΡΠ°ΡΡΡ Π΄Π°Π½Π½ΡΡ Π²Π½ΡΡΡΠΈ GIF ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π΅ΡΠ»ΠΈ ΠΌΡ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ Π²ΡΡΠ°Π²ΠΈΡΡ ΡΡΠ΄Π° Javascript, ΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π±ΡΠ΄Π΅Ρ ΡΠΈΠ»ΡΠ½ΠΎ ΠΈΡΠΊΠ°ΠΆΡΠ½Π½ΡΠΌ. ΠΠΎ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΏΡΠΈΡΠΈΠ½Π΅ ΡΠΎΡΠΌΠ°Ρ GIF ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½Π΅ΡΡΠΎ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Comment Extension. ΠΡΠΎ ΠΌΠ΅ΡΡΠΎ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΡΡΡΡ Π΄Π΅ΠΊΠΎΠ΄Π΅ΡΠΎΠΌ GIF β ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ Π΄Π»Ρ Π½Π°ΡΠ΅ΠΉ Javascript-Π»ΠΎΠ³ΠΈΠΊΠΈ.
ΠΡΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ ΡΠ°Π±Π»ΠΈΡΡ ΡΠ²Π΅ΡΠΎΠ² GIF. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ ΡΡΠ΄Π° Π»ΡΠ±ΠΎΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΊΡΡΡΡ ΡΡΡΠΎΠΊΡ GIF89a, Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π²Π΅ΡΡ Javascript, Π° Π·Π°ΡΠ΅ΠΌ Π½Π°ΡΠ°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΡΡΡΠΎΡΠ½ΡΠΉ Π±Π»ΠΎΠΊ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, ΡΡΠΎΠ±Ρ ΠΎΡΡΠ°Π»ΡΠ½Π°Ρ ΡΠ°ΡΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π΅ Π²Π»ΠΈΡΠ»Π° Π½Π° ΠΏΠ°ΡΡΠ΅Ρ Javascript.
Π ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΈΡΠΎΠ³Π΅ Π½Π°Ρ ΡΠ°ΠΉΠ» ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅: Ρ ΠΎΡΡ ΡΠ°ΠΌ Π±Π»ΠΎΠΊ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π»ΡΠ±ΠΎΠΉ ΡΠ°Π·ΠΌΠ΅Ρ, ΠΎΠ½ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠΎΠ΄Π±Π»ΠΎΠΊΠΎΠ², ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ 255. ΠΠ΅ΠΆΠ΄Ρ ΠΏΠΎΠ΄Π±Π»ΠΎΠΊΠ°ΠΌΠΈ Π΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ Π±Π°ΠΉΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠΉ Π΄Π»ΠΈΠ½Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄Π±Π»ΠΎΠΊΠ°. ΠΠΎΡΡΠΎΠΌΡ ΡΡΠΎΠ±Ρ ΡΠΌΠ΅ΡΡΠΈΡΡ ΡΡΠ΄Π° Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠΊΡΠΈΠΏΡ, Π΅Π³ΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ Π½Π° ΠΌΠ΅Π»ΠΊΠΈΠ΅ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΡ, ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π²ΠΎΡ ΡΠ°ΠΊ:
Π¨Π΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΡΠ΅ ΠΊΠΎΠ΄Ρ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ β ΡΡΠΎ Π±Π°ΠΉΡΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄Π±Π»ΠΎΠΊΠ°. ΠΠ½ΠΈ Π½Π΅ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΊ Javascript, Π½ΠΎ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½Ρ Π΄Π»Ρ ΡΠΎΡΠΌΠ°ΡΠ° ΡΠ°ΠΉΠ»Π° GIF. Π§ΡΠΎΠ±Ρ ΠΎΠ½ΠΈ Π½Π΅ ΠΌΠ΅ΡΠ°Π»ΠΈ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΊΠΎΠ΄Π°, ΠΈΡ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ. Π― Π½Π°ΠΏΠΈΡΠ°Π» Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠΊΡΠΈΠΏΡ, ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΠΈΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΡ ΡΠΊΡΠΈΠΏΡΠ° ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΠΈΠΉ ΠΈΡ Π² ΡΠ°ΠΉΠ» ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ:
ΠΠΎΠ΄ΡΠΈΡΠ°Π΅ΠΌ Π΄Π²ΠΎΠΈΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Ρ Π½Π°Ρ Π΅ΡΡΡ Π±Π°Π·ΠΎΠ²Π°Ρ ΡΡΡΡΠΊΡΡΡΠ°, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ Π΄Π²ΠΎΠΈΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π΅ ΠΈΡΠΏΠΎΡΡΠΈΠ»ΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΊΠΎΠ΄Π°. ΠΠ°ΠΊ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΎΡΡ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅, ΡΠ°ΠΉΠ» ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΡΡΡ ΡΠ°Π·Π΄Π΅Π»ΠΎΠ²: Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ GIF89a, Π²ΡΠΎΡΠΎΠΉ β ΡΡΠΎ ΠΊΠΎΠ΄ Π½Π° Javascript, Π° ΡΡΠ΅ΡΠΈΠΉ β ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΡΡΠΎΠΊ.
ΠΠ°Π²Π°ΠΉΡΠ΅ Π²Π·Π³Π»ΡΠ½Π΅ΠΌ Π½Π° ΠΏΠ΅ΡΠ²ΡΡ ΡΠ°ΡΡΡ Ρ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ:
ΠΠΎΡΠ΅ΠΌΡΡ Ρ ΠΈΡΠΊΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ
Π ΠΊΠΎΠ½ΡΠ΅ Javascript-ΠΊΠΎΠ΄Π° ΠΌΡ ΠΎΡΠΊΡΡΠ»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡΡΡΠΎΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ, ΡΡΠΎΠ±Ρ Π΄Π²ΠΎΠΈΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π΅ Π²Π»ΠΈΡΠ»ΠΈ Π½Π° ΠΏΠ°ΡΡΠΈΠ½Π³ Javascript:
ΠΠ°Π²Π΅ΡΡΠ°Π΅ΠΌ ΡΠ°ΠΉΠ»
ΠΠ°ΠΌ ΠΎΡΡΠ°Π»Π°ΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ β Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π°. Π€Π°ΠΉΠ» Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Π²Π΅ΡΡΠ°ΡΡΡΡ Π±Π°ΠΉΡΠ°ΠΌΠΈ 00 3B, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π·Π°Π²Π΅ΡΡΠΈΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ ΡΠ°Π½ΡΡΠ΅. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΎ ΠΊΠΎΠ½Π΅Ρ ΡΠ°ΠΉΠ»Π° ΠΈ Π»ΡΠ±ΡΠ΅ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠΎΠ²ΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ Π±ΡΠ΄ΡΡ Π½Π΅ ΠΎΡΠΎΠ±ΠΎ Π·Π°ΠΌΠ΅ΡΠ½Ρ, Ρ ΠΏΡΠΎΡΡΠΎ Π·Π°Π²Π΅ΡΡΠΈΠ» ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ ΠΈΠ· Π±Π»ΠΎΠΊΠΎΠ² ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ» ΠΎΠ΄Π½ΠΎΡΡΡΠΎΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ, ΡΡΠΎΠ±Ρ ΠΊΠΎΠ½Π΅Ρ ΡΠ°ΠΉΠ»Π° Π½Π΅ Π²ΡΠ·ΡΠ²Π°Π» ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΏΡΠΈ ΠΏΠ°ΡΡΠΈΠ½Π³Π΅:
Π£Π³ΠΎΠ²Π°ΡΠΈΠ²Π°Π΅ΠΌ Π±ΡΠ°ΡΠ·Π΅Ρ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅
Refused to execute script from ‘http://localhost:8080/image.gif’ because its MIME type (‘image/gif’) is not executable. [ΠΡΠΊΠ°Π· ΠΎΡ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΊΡΠΈΠΏΡΠ° ΠΈΠ· ‘http://localhost:8080/image.gif’, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π΅Π³ΠΎ MIME-ΡΠΈΠΏ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΌ.]
Π’ΠΎ Π΅ΡΡΡ Π±ΡΠ°ΡΠ·Π΅Ρ ΡΠΏΡΠ°Π²Π΅Π΄Π»ΠΈΠ²ΠΎ Π³ΠΎΠ²ΠΎΡΠΈΡ: Β«ΠΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, Ρ Π½Π΅ Π±ΡΠ΄Ρ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»Π½ΡΡΡ!Β». Π Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² ΡΡΠΎ Π²ΠΏΠΎΠ»Π½Π΅ ΡΠΌΠ΅ΡΡΠ½ΠΎ. ΠΠΎ ΠΌΡ Π²ΡΡ ΡΠ°Π²Π½ΠΎ Ρ ΠΎΡΠΈΠΌ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΡ. Π Π΅ΡΠ΅Π½ΠΈΠ΅ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΡΡΠΎ Π½Π΅ Π³ΠΎΠ²ΠΎΡΠΈΡΡ Π±ΡΠ°ΡΠ·Π΅ΡΡ, ΡΡΠΎ ΡΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Ρ Π½Π°ΠΏΠΈΡΠ°Π» Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠ΅ΡΠ²Π΅Ρ, ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΠΈΠΉ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π±Π΅Π· ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°.
ΠΠ΅Π· ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ MIME-ΡΠΈΠΏΠ΅ ΠΈΠ· Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Π±ΡΠ°ΡΠ·Π΅Ρ Π½Π΅ Π·Π½Π°Π΅Ρ, ΡΡΠΎ ΡΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π΄Π΅Π»Π°Π΅Ρ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠΎ, ΡΡΠΎ Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅: ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ Π΅Π³ΠΎ ΠΊΠ°ΠΊ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΡΠ΅Π³Π΅ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΊΠ°ΠΊ Javascript Π² ΡΠ΅Π³Π΅
ΠΠ΅ΡΠ΅Π²ΠΎΠ΄ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ bmp Π² Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΠΊΠΎΠ΄
Π‘ΡΠΈΡΠ°Ρ ΡΠ΅ΠΏΠ΅ΡΡ Ρ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ³ΠΎ
ΠΠΎΡ ΡΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ° Π² hex ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅
1 ΠΎΡΠ²Π΅Ρ 1
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ ΠΎΠ±ΡΠΈΠΌ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΡΠΎΡΠΌΠ°ΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠΈ: BMP.
ΠΡΠ»ΠΈ ΡΠΏΡΠΎΡΠ΅Π½Π½ΠΎ, Π² Π½Π°ΡΠ°Π»Π΅ ΡΠ°ΠΉΠ»Π° ΠΈΠ΄ΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ, ΠΏΠΎΡΠΎΠΌ ΡΠΆΠ΅ ΡΠ°ΠΌΠΈ Π±ΠΈΠ½Π°ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅:
ΠΠ±ΡΠ°Ρ ΡΡΡΡΠΊΡΡΡΠ°
ΠΠ°Π½Π½ΡΠ΅ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ BMP ΡΠΎΡΡΠΎΡΡ ΠΈΠ· ΡΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π±Π»ΠΎΠΊΠΎΠ² ΡΠ°Π·Π»ΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°:
ΠΠΎ ΡΡΡΠΈ, ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±ΡΠ°ΡΡΡΡ Π΄ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΠΈΠΊΡΠ΅Π»ΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ , Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ Π²ΡΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ.
Π‘ΠΌΠΎΡΡΠΈΠΌ Π΄Π°Π»ΡΡΠ΅, ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΡ BITMAPFILEHEADER (ΠΊΠΎΡΠΎΡΠ°Ρ, ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ, ΠΈΠ΄Π΅Ρ Ρ Π½Π°ΡΠ°Π»Π° ΡΠ°ΠΉΠ»Π° BMP):
Π‘ΠΌΠΎΡΡΠΈΠΌ Π½Π° Π²Π°Ρ ΡΠΊΡΠΈΠ½ΡΠΎΡ:
Π ΠΏΠΎΠ»Π΅ bfOffBits Π² ΡΠ°ΠΉΠ»Π΅ Π·Π°ΠΏΠΈΡΠ°Π½ΠΎ ΡΠΈΡΠ»ΠΎ 0x36, ΠΈ ΠΏΠΎ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ 0x36 ΠΎΡ Π½Π°ΡΠ°Π»Π° ΡΠ°ΠΉΠ»Π° ΠΏΠΎΠ΄ΡΡΠ΄ ΠΈΠ΄ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ FF (ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅? Π½Π΅ Π΄ΡΠΌΠ°Ρ). Π’ΡΠΎΠΉΠΊΠ° Π±Π°ΠΉΡ FF FF FF (8 Π±ΠΈΡ * 3 = 24 Π±ΠΈΡΠ° Π½Π° ΠΏΠΈΠΊΡΠ΅Π»Ρ) ΠΊΠ°ΠΊ ΡΠ°Π· ΠΊΠΎΠ΄ΠΈΡΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΏΠΈΠΊΡΠ΅Π»Ρ Π±Π΅Π»ΠΎΠ³ΠΎ ΡΠ²Π΅ΡΠ°, Ρ.Π΅. ΡΡΠΎ ΠΊΠ°ΠΊ ΡΠ°Π· ΠΈ Π΅ΡΡΡ ΠΈΡΠΊΠΎΠΌΡΠ΅ ΠΏΠΈΠΊΡΠ΅Π»ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅.
Π§ΡΠΎ Π΅ΡΠ΅ ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ Π·Π½Π°ΡΡ? ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ ΠΏΡΠΈ ΡΡΠ΅Π½ΠΈΠΈ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΡΠΎ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ° Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΡΠΌΠ°Ρ RGB Ρ 24 Π±ΠΈΡΠ°ΠΌΠΈ Π½Π° ΠΏΠΈΠΊΡΠ΅Π»Ρ. ΠΠΎ-Π²ΡΠΎΡΡΡ Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ.
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠΌΠΎΡΡΠ΅ΡΡ ΡΡΠΎ ΠΈΠ΄Π΅Ρ ΡΠ»Π΅Π΄ΠΎΠΌ Π·Π° ΡΡΡΡΠΊΡΡΡΠΎΠΉ. Π ΡΠ»Π΅Π΄ΠΎΠΌ ΠΈΠ΄Π΅Ρ ΡΡΡΡΠΊΡΡΡΠ° BITMAPINFO, Π½ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ°Π·Π½ΡΡ Π²Π΅ΡΡΠΈΠΉ. ΠΠ΅ΡΡΠΈΡ Π·Π°Π΄Π°Π΅ΡΡΡ Π² ΠΏΠ΅ΡΠ²ΡΡ ΡΠ΅ΡΡΡΠ΅Ρ Π±Π°ΠΉΡΠ°Ρ . Π‘Π°ΠΌΠ°Ρ Π΄ΡΠ΅Π²Π½ΡΡ Π²Π΅ΡΡΠΈΡ ΠΈΠΌΠ΅Π»Π° ΡΠ°Π·ΠΌΠ΅Ρ 12 Π±Π°ΠΉΡ, Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²ΡΠ΅ ΠΎΡ 40 Π±Π°ΠΉΡ ΠΈ Π²ΡΡΠ΅. ΠΡΠ΄Π΅ΠΌ Π΄Π»Ρ ΠΏΡΠΎΡΡΠΎΡΡ ΡΡΠΈΡΠ°ΡΡ, ΡΡΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌ ΡΠΎΠ»ΡΠΊΠΎ Π½ΠΎΠ²ΡΠ΅ ΡΠΎΡΠΌΠ°ΡΡ BMP, ΡΠ΅ΠΌ Π±ΠΎΠ»Π΅Π΅ ΡΡΠΎ Π½Π°ΡΠ°Π»ΠΎ ΡΡΡΡΠΊΡΡΡΡ BITMAPINFO Ρ Π½ΠΎΠ²ΡΡ ΡΠΎΡΠΌΠ°ΡΠΎΠ² ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ.
ΠΡΠ°ΠΊ, Π² ΡΡΡΡΠΊΡΡΡΠ°Ρ BITMAPINFO Π½ΠΎΠ²ΡΡ ΡΠΎΡΠΌΠ°ΡΠ°Ρ ΠΏΠΎ ΠΏΠΎΡΡΠ΄ΠΊΡ ΠΈΠ΄ΡΡ:
Π‘Π½ΠΎΠ²Π° ΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΡΠΊΡΠΈΠ½ΡΠΎΡ:
ΠΠ°ΠΊ Ρ ΡΡΠΈΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎ? ΠΠ²Π° Π²Π°ΡΠΈΠ°Π½ΡΠ°:
ΠΡΠ΅Π²Π΄ΠΎΠΊΠΎΠ΄ Π΄Π»Ρ Π²ΡΠΎΡΠΎΠ³ΠΎ ΡΠ»ΡΡΠ°Ρ:
ΠΡΠ΅ ΠΎΠ΄Π½Π° ΡΠΎΠ½ΠΊΠΎΡΡΡ, Π΅ΡΠ»ΠΈ Π² ΠΏΠΎΠ»Π΅ biHeight Π»Π΅ΠΆΠΈΡ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, ΡΠΎ ΡΡΡΠΎΠΊΠΈ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ Π² ΡΠ°ΠΉΠ»Π΅ Π·Π°ΠΏΠΈΡΠ°Π½Ρ Π² ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ (ΠΎΡ Π½ΠΈΠΆΠ½Π΅ΠΉ ΡΡΡΠΎΠΊΠΈ ΠΊ Π²Π΅ΡΡ Π½Π΅ΠΉ ΡΡΡΠΎΠΊΠ΅). ΠΡΠ»ΠΈ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅, ΡΠΎ Π² ΠΏΡΡΠΌΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅.
ΠΠ΅ΡΠ΅Π²ΠΎΠ΄ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΠΊΠΎΠ΄
ΠΠ²ΠΎΠΈΡΠ½ΡΠΉ ΠΊΠΎΠ΄ Π½ΠΈΠΆΠ΅:
010000100100110111110110000000010000000000000000000000000000 0000
000000000000000000111110000000000000000000000000001010000000 0000
000000000000000000110111000000000000000000000000001101110000 0000
000000000000000000000001000000000000000100000000000000000000 0000
000000000000000010111000000000010000000000000000110001000000 1110
000000000000000011000100000011100000000000000000000000100000 0000
000000000000000000000010000000000000000000000000111111111111 1111
111111110000000000000000000000000000000000000000000000000000 0000
000000000000000000000000000000000000000000000000000000000000 0000
000000000000000000000000000000000000000000000000000000000000 0000
000000000000000000000000000000000000000000000000000000000000 0000
000000000000000000000000000000000000000000000000000000000000 0000
000000000000000000000000000000000000000000000000000000000000 0000
000000000000000000000000000000000000000000000000000001111000 0000
000000000000000000000000000000000000000000000000000001111100 0000
000000000000000000000000000000000000000000000000000001111100 0000
000000000000000000000000111100000000000000000000000001111100 0000
000000000000000000000001111100000000000000000000000001111110 0000
000000000000000000000001111100000000000000000000000000111110 0000
000000000000000000000011111100000000000000000000000000111111 0000
000000000000000000000011111100000000000000000000000000011111 0000
000000000000000000000011111000000000000000000000000000011111 1000
000000000000000000000111111000000000000000000000000000001111 1000
000000000000000000000111110000000000000000000000000000001111 1100
000000000000000000001111110000000000000000000000000000000111 1100
000000000000000000001111100000000000000000000000000000000111 1100
000000000000000000011111100000000000000000000000000000000111 1110
000000000000000000011111000000000000000000000000000000000011 1110
000000000000000000111111000000000000000000000000000000000011 1111
111111111111111111111110000000000000000000000000000000000001 1111
111111111111111111111110000000000000000000000000000000000001 1111
111111111111111111111100000000000000000000000000000000000001 1111
111111111111111111111100000000000000000000000000000000000001 1111
111111111111111111111000000000000000000000000000000000000000 1111
111111111111111111111000000000000000000000000000000000000000 0111
111000000000000111110000000000000000000000000000000000000000 0111
111000000000001111110000000000000000000000000000000000000000 0011
111000000000001111100000000000000000000000000000000000000000 0011
111100000000011111100000000000000000000000000000000000000000 0001
111100000000011111000000000000000000000000000000000000000000 0001
111110000000111111000000000000000000000000000000000000000000 0000
111110000000111110000000000000000000000000000000000000000000 0000
111111000001111110000000000000000000000000000000000000000000 0000
011111000001111100000000000000000000000000000000000000000000 0000
011111100011111100000000000000000000000000000000000000000000 0000
001111100011111000000000000000000000000000000000000000000000 0000
001111100111111000000000000000000000000000000000000000000000 0000
001111110111110000000000000000000000000000000000000000000000 0000
000111111111110000000000000000000000000000000000000000000000 0000
000111111111100000000000000000000000000000000000000000000000 0000
000011111111100000000000000000000000000000000000000000000000 0000
000011111111000000000000000000000000000000000000000000000000 0000
000001111111000000000000000000000000000000000000000000000000 0000
000001111111000000000000000000000000000000000000000000000000 0000
000001111110000000000000000000000000000000000000000000000000 0000
000000111110000000000000000000000000000000000000000000000000 0000
000000111110000000000000000000000000000000000000000000000000 0000
000000011110000000000000000000000000000000000000000000000000 0000
000000000000000000000000000000000000000000000000000000000000 0000
000000000000000000000000000000000000000000000000000000000000 0000
000000000000000000000000000000000000000000000000000000000000 0000
000000000000000000000000000000000000000000000000000000000000 0000
000000000000000000000000000000000000000000000000
01000010 01001101 11110110 00000001 00000000 00000000 00000000 00000000
00000000 00000000 00111110 00000000 00000000 00000000 00101000 00000000
00000000 00000000 00110111 00000000 00000000 00000000 00110111 00000000
00000000 00000000 00000001 00000000 00000001 00000000 00000000 00000000
00000000 00000000 10111000 00000001 00000000 00000000 11000100 00001110
00000000 00000000 11000100 00001110 00000000 00000000 00000010 00000000
00000000 00000000 00000010 00000000 00000000 00000000 11111111 11111111
11111111 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000111 10000000
00000000 00000000 00000000 00000000 00000000 00000000 00000111 11000000
00000000 00000000 00000000 00000000 00000000 00000000 00000111 11000000
00000000 00000000 00000000 11110000 00000000 00000000 00000111 11000000
00000000 00000000 00000001 11110000 00000000 00000000 00000111 11100000
00000000 00000000 00000001 11110000 00000000 00000000 00000011 11100000
00000000 00000000 00000011 11110000 00000000 00000000 00000011 11110000
00000000 00000000 00000011 11110000 00000000 00000000 00000001 11110000
00000000 00000000 00000011 11100000 00000000 00000000 00000001 11111000
00000000 00000000 00000111 11100000 00000000 00000000 00000000 11111000
00000000 00000000 00000111 11000000 00000000 00000000 00000000 11111100
00000000 00000000 00001111 11000000 00000000 00000000 00000000 01111100
00000000 00000000 00001111 10000000 00000000 00000000 00000000 01111100
00000000 00000000 00011111 10000000 00000000 00000000 00000000 01111110
00000000 00000000 00011111 00000000 00000000 00000000 00000000 00111110
00000000 00000000 00111111 00000000 00000000 00000000 00000000 00111111
11111111 11111111 11111110 00000000 00000000 00000000 00000000 00011111
11111111 11111111 11111110 00000000 00000000 00000000 00000000 00011111
11111111 11111111 11111100 00000000 00000000 00000000 00000000 00011111
11111111 11111111 11111100 00000000 00000000 00000000 00000000 00011111
11111111 11111111 11111000 00000000 00000000 00000000 00000000 00001111
11111111 11111111 11111000 00000000 00000000 00000000 00000000 00000111
11100000 00000001 11110000 00000000 00000000 00000000 00000000 00000111
11100000 00000011 11110000 00000000 00000000 00000000 00000000 00000011
11100000 00000011 11100000 00000000 00000000 00000000 00000000 00000011
11110000 00000111 11100000 00000000 00000000 00000000 00000000 00000001
11110000 00000111 11000000 00000000 00000000 00000000 00000000 00000001
11111000 00001111 11000000 00000000 00000000 00000000 00000000 00000000
11111000 00001111 10000000 00000000 00000000 00000000 00000000 00000000
11111100 00011111 10000000 00000000 00000000 00000000 00000000 00000000
01111100 00011111 00000000 00000000 00000000 00000000 00000000 00000000
01111110 00111111 00000000 00000000 00000000 00000000 00000000 00000000
00111110 00111110 00000000 00000000 00000000 00000000 00000000 00000000
00111110 01111110 00000000 00000000 00000000 00000000 00000000 00000000
00111111 01111100 00000000 00000000 00000000 00000000 00000000 00000000
00011111 11111100 00000000 00000000 00000000 00000000 00000000 00000000
00011111 11111000 00000000 00000000 00000000 00000000 00000000 00000000
00001111 11111000 00000000 00000000 00000000 00000000 00000000 00000000
00001111 11110000 00000000 00000000 00000000 00000000 00000000 00000000
00000111 11110000 00000000 00000000 00000000 00000000 00000000 00000000
00000111 11110000 00000000 00000000 00000000 00000000 00000000 00000000
00000111 11100000 00000000 00000000 00000000 00000000 00000000 00000000
00000011 11100000 00000000 00000000 00000000 00000000 00000000 00000000
00000011 11100000 00000000 00000000 00000000 00000000 00000000 00000000
00000001 11100000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000
PS ΠΠ²ΡΠΎΡ ΡΡΠ°ΡΡΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΠ» ΡΠ²ΠΎΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ Π²ΡΡΡΠ½ΡΡ Ρ.ΠΊ. Π΅Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ 3×5 ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ; Ρ ΠΌΠ΅Π½Ρ Π² python shell Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΠΊΠΎΠ΄ Π±Π΅Π· Π±ΡΠ΅ΡΠ΅ΠΉ, Π½Π΅ Π·Π½Π°Ρ ΠΏΠΎΡΠ΅ΠΌΡ Π·Π΄Π΅ΡΡ ΡΠ°ΠΊ; ΠΠ½Π΅ 15 Π»Π΅Ρ ΠΌΠΎΠ³Ρ ΡΡΠΎ-ΡΠΎ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΎΠ±ΡΡΡΠ½ΡΠΉΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΈ ΠΏΠΎΠ½ΡΡΠ½Π΅Π΅. Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ!
ΠΠΎΠΌΠΎΡΡ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΡ , ΠΊΡΡΡΠΎΠ²ΡΡ ΠΈ Π΄ΠΈΠΏΠ»ΠΎΠΌΠ½ΡΡ ΡΠ°Π±ΠΎΡ Π·Π΄Π΅ΡΡ.