
рддрд╕реНрд╡реАрд░ рдореЗрдВ рдПрдХ рдмрд╣реБрдд рд╣реА рдЙрдкрдпреБрдХреНрдд рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рддреБрд░реНрдХреА рд╕реНрдирд╛рдЗрдкрд░ рд░рд╛рдЗрдлрд▓ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ - рдЬреЗрдПрдирдЬреАред рд▓реЗрдЦ, рдЖрдкрдиреЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рдХрд┐ рдпрд╣ рдЬреЗрдПрдирдЬреА рдЧреНрд░рд╛рдлрд┐рдХ рдкреНрд░рд╛рд░реВрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реЛрдЧрд╛, рди рдХрд┐ рд╣рдерд┐рдпрд╛рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рдЗрд╕ рдкреНрд░рд╛рд░реВрдк рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рд╖рдп рдкрд╣рд▓реЗ рд╣реА рд╣рдм рдкрд░ рдлрд╝реНрд▓рд┐рдХрд░ рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ; рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХрдИ рдирд╣реАрдВ рдереЗ, рдФрд░ рдХреБрдЫ, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдмрд╛рдж рдореЗрдВ рд▓реЗрдЦрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╣рдЯрд╛ рджрд┐рдП рдЧрдП рдереЗред рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдЬреЗрдПрдирдЬреА рдПрдХ рдмрд╣реБрдд рд▓реЛрдХрдкреНрд░рд┐рдп рдкреНрд░рд╛рд░реВрдк рдирд╣реАрдВ рд╣реИ рдФрд░ рдПрдордПрдирдЬреА рдкреНрд░рд╛рд░реВрдк рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЬрд┐рд╕реЗ, рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдореГрдд рдЬрдиреНрдо рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЗрдПрдирдЬреА рдХреЗ рдкрд╛рд╕ рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рд╕рдВрдкрддреНрддрд┐ рд╣реИ - рдпрд╣ рдПрдХ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдХреА рд╣рд╛рдирд┐рдкреВрд░реНрдг рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рд╕рдВрдкреАрдбрд╝рди рдкреНрд▓рд╕ рдПрдХ рдЕрд▓реНрдлрд╛ рдЪреИрдирд▓ рдХреА рд╢реБрд░реБрдЖрдд рд╣реИред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, JNG MNG рдкреНрд░рд╛рд░реВрдк рдХрд╛ рд╕рдмрд╕реЗрдЯ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣реЗрдбрд░ рдореЗрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдорд╛рд░реНрдХрд░ рдХреЗ рд╕рд╛рде, рдЬреЛ рдЗрди рджреЛрдиреЛрдВ рд╕реНрд╡рд░реВрдкреЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ)ред рд░рдВрдЧ рдбреЗрдЯрд╛ рдЬреЗрдкреАрдИрдЬреА рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрд▓реНрдлрд╛ рдХреЛ рджреЛ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдпрд╛ рддреЛ рдЬреЗрдкреАрдИрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЧреНрд░реЗрд╕реНрдХреЗрд▓ рдореЗрдВ рдЪрд┐рддреНрд░ рдХреА рддрд░рд╣, рдпрд╛ рдкреАрдПрдирдЬреА рдореЗрдВ рдЙрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ - рджреЛрд╖рд░рд╣рд┐рдд рд╕рдВрдкреАрдбрд╝рдиред
рдЬреЗрдПрдирдЬреА рдХрд╣рд╛рдВ рдХрд╛рдо рдЖ рд╕рдХрддрд╛ рд╣реИ? рдореЗрд░реЗ рд▓рд┐рдП, рдпрд╣ рдореЛрдмрд╛рдЗрд▓ рдЧреЗрдо рдореЗрдВ рдмрдирд╛рд╡рдЯ рдПрдЯрд▓рд╕ рдХреЗ рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЙрдкрдпреБрдХреНрдд рдерд╛ред рдПрдХ рдЫреЛрдЯрд╛ рдЙрджрд╛рд╣рд░рдг - рдЧреЗрдо рд╕реЗ рд╕реЗрдЯ рдХрд┐рдП рдЧрдП рдореВрд▓ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХрд╛ рд╡рдЬрди 57 рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рдерд╛, рд╕рднреА рдкреАрдПрдирдЬреА рдХреЛ рдЬрд┐рдВрдЬ рдХреЗ рд╕рд╛рде рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рдж - рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рд╕реЗрдЯ рдХрд╛ рд╡рдЬрди 15 рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рд╕реЗ рд╢реБрд░реВ рд╣реБрдЖред рдореЛрдмрд╛рдЗрд▓ рдЧреЗрдо рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫреА рдЬреАрддред рдореИрдВ рдЕрдиреНрдп рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рдардХ рдкрд░ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реВрдВ, рдЬрд╣рд╛рдВ jng рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ рджреЗрдЦрдирд╛ рд╣реИ, рдХреИрд╕реЗ рдмрдирд╛рдирд╛ рд╣реИ, рдФрд░ рдХреИрд╕реЗ рд▓реЛрдб рдХрд░рдирд╛ рд╣реИ (C / C ++ рдХреЛрдб рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде) JNG рдЪрд┐рддреНрд░, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЗрд╕рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рднреАред
JNG рддрд╕реНрд╡реАрд░реЗрдВ рдХреИрд╕реЗ рджреЗрдЦреЗрдВ?
- XnView (http://www.xnview.com/) - рдкреНрд▓рдЧрдЗрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЖрдкрдХреЛ JNG рдЦреЛрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
- рдЗрд░рдлрд╛рдирд╡реНрдпреВ (http://www.irfanview.com/) - рдХреЛ рднреА рдкреНрд▓рдЧ-рдЗрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдкреИрдХ рдореЗрдВ рдЕрдиреНрдп рдкреНрд░рд╛рд░реВрдкреЛрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИ)ред
рдЬреЗрдПрдирдЬреА рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХреИрд╕реЗ рдмрдЪрд╛рдПрдВ?
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдлрд╝реЛрдЯреЛрд╢реЙрдк рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд▓рдЧрдЗрди рд╣реИ -
download.fyxm.net/JNG-Format-8069.html ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рд╡рд╣ рдЕрдкрдирд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рджреВрд╕рд░реЗ, рдЖрдк рдХрд╛рдлреА рдкреНрд░рд╕рд┐рджреНрдз рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - ImageMagic (http://www.imagemagick.org)
JNG рдкреНрд░рд╛рд░реВрдк рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХрдирд╡рд░реНрдЯрд░ рд▓рд┐рдЦрд╛ рдЬреЛ рдЖрдкрдХреЛ png рдХреЛ jng рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ -
code.google.com/p/png2jng/downloads/list(рдХрдирд╡рд░реНрдЯрд░ рд╡рд┐рдВрдбреЛрдЬрд╝ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, <tchar.h> рд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЫреАрд▓рдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред
рдореЗрд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ minuses рдХреА:
- рдореИрдВрдиреЗ 16 рдмрд┐рдЯ рдкреАрдПрдирдЬреА / jng рдХреЛ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ (рдореБрдЭреЗ рдРрд╕реА рдмрд┐рдЯрдиреЗрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ);
- рд╕рдВрдкреАрдбрд╝рди рд╕реЗ рдкрд╣рд▓реЗ рдЕрд▓реНрдлрд╛ рдЪреИрдирд▓ рдбреЗрдЯрд╛ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВред PNG рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдЕрд▓реНрдлрд╛ рдЪреИрдирд▓ рдХреЗ рд╕рдВрдкреАрдбрд╝рди рдХреА рдмреЗрд╣рддрд░ рдбрд┐рдЧреНрд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред
JNG рд▓реЛрдб рдХреИрд╕реЗ рдХрд░реЗрдВ?
libmng
Libmng
sourceforge.net/projects/libmng рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рдкреЗрд╢реЗрд╡рд░реЛрдВ:
- рдпрд╣ рдХрд╛рдлреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдореМрдЬреВрдж рд╣реИ;
- рди рдХреЗрд╡рд▓ jng рдмрд▓реНрдХрд┐ рдПрдирд┐рдореЗрдЯреЗрдб mng рд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ;
- mng / jng Pictures рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЛрдб рднреА рд╣реИред
рд╡рд┐рдкрдХреНрд╖:
- рдмрдбрд╝реА рдФрд░ рднрд╛рд░реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА
- рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд▓реНрдХрд┐ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдкреАрдЖрдИ, рдЬрд┐рд╕реЗ рдПрдиреАрдореЗрд╢рди рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ;
- рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдЪрд┐рддреНрд░ рдкрдврд╝рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрдерддрд╛;
- рд╕реНрдореГрддрд┐ рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдЧреНрд▓реВрдЯреЛрдирд╕ред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ libmng рдХреЛ jpeglib рдФрд░ zlib рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдпрджрд┐ рдЖрдк libmng рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВ - рддреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рд▓реЛрдб рдХрд░рдиреЗ рдкрд░ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИред
рдЖрдк рдпрд╣рд╛рдВ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдкреВрд░реЗ рд╕реНрд░реЛрдд рдХреЛрдб рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ -
code.google.com/p/png2jng/source/browse/trunk/jngdump/jngdump.cpp (png2jng рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ)
рдпрд╣рд╛рдВ рдореИрдВ рдореБрдЦреНрдп рдмрд┐рдВрджреБрдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ред
рдкрд╣рд▓рд╛ рдХрджрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдирд╛ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдиреНрдпреВрдирддрдо рдХреЙрд▓рдмреИрдХ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реИред
рдЫрд╡рд┐ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдРрд╕реА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛, рдЬрд┐рд╕реЗ рдореИрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗ рдХреЙрд▓рдмреИрдХ рдореЗрдВ рдЬрд╛рддрд╛ рд╣реВрдВ:
struct mng_info { FILE* file;
рдЗрд╕рд▓рд┐рдП - libmng рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдирд╛
/* , mng_handle. , . тАУ libmng , , ( тАУ calloc, memset ). */ mng_handle hmng; mng_info mngInfo; mng_retcode retCode; hmng = mng_initialize(&mngInfo, mymngalloc, mymngfree, MNG_NULL); /* */ /* */ Mng_setcb_errorproc(hmng, mymngerror); /* . , .*/ mng_setcb_openstream(hmng, mymngopenstream); /* */ mng_setcb_closestream(hmng, mymngclosestream); /* */ mng_setcb_readdata(hmng, mymngreadstream); /* тАУ , , */ mng_setcb_processheader(hmng, mymngprocessheader); /* libmng */ mng_setcb_getcanvasline(hmng, mymnggetcanvasline); /* . , , . тАУ . */ mng_setcb_gettickcount(hmng, mymnggettickcount); /* . , . */ mng_setcb_settimer(hmng, mymngsettimer); /* libmng , . , getcanvasline , .*/ mng_setcb_refresh(hmng, mymngimagerefresh);
рдХреЙрд▓рдмреИрдХ рдореЗрдВ рд╕реЗ, рдореИрдВ рдпрд╣рд╛рдВ рдХреЗрд╡рд▓ рдЙрдиреНрд╣реАрдВ рдХреЛ рджреВрдВрдЧрд╛ рдЬреЛ рд╕рдмрд╕реЗ рдмрдбрд╝реА рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ
static mng_bool mymngreadstream(mng_handle mng, mng_ptr buffer, mng_uint32 size, mng_uint32 *bytesread) { mng_info *mymng = (mng_info*)mng_get_userdata(mng); *bytesread = fread(buffer, 1, size, mymng->file); return MNG_TRUE; } mng_bool mymngprocessheader (mng_handle hHandle, mng_uint32 iWidth, mng_uint32 iHeight) { mng_info* mngInfo = (mng_info*)mng_get_userdata (hHandle); if (mng_set_canvasstyle (hHandle, MNG_CANVAS_RGBA8)) { return MNG_FALSE; } mngInfo->width = iWidth; mngInfo->height = iHeight; mngInfo->image = new unsigned char[iWidth * 4 * iHeight];
рдЫрд╡рд┐ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред
/* .*/ /* mng */ retCode = mng_read(hmng); /* тАУ JNG. MNG*/ if(mng_get_sigtype (hmng) != mng_it_jng) { /* тАУ */ }
рдЕрдм рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдбрд┐рдХреЛрдб рдХрд┐рдП рдЧрдП рдкрд┐рдХреНрд╕реЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЕрдм рддрдХ, рд╕рдм рдХреБрдЫ рдХреБрдЫ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдЬреИрд╕реЗ рдХрд┐ libng рдпрд╛ jpeglib рдХреА рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реИред
рдЕрдЧрд▓рд╛ рдореМрд▓рд┐рдХ рдЕрдВрддрд░ рдЖрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ libmng рдореВрд▓ рд░реВрдк рд╕реЗ рдПрдирд┐рдореЗрдЯреЗрдб рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
/* mng_display_resume libmng */ retCode = mng_display(hmng); while((retCode == MNG_NEEDTIMERWAIT) && (mngInfo.timer <= 1)) { retCode = mng_display_resume(hmng); } /* тАУ pixels mng_info*/
рд╡рд╣ рд╕рдм рдХреБрдЫ рд╣реИ рдЬреЛ libmng рджреНрд╡рд╛рд░рд╛ рдЖрд╡рдВрдЯрд┐рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ
mng_cleanup(&hmng)
рдЦреИрд░, рд╣рдорд╛рд░реЗ рдзрд╛рдЧреЗ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордд рднреВрд▓рдирд╛, рд╕реНрдореГрддрд┐ рдХреЛ рдореБрдХреНрдд рдХрд░рдирд╛, рдЖрджрд┐ред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, libmng рдХреА рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдШрд╛рддрдХ рд╣реЛ рдЧрдИ, рдФрд░ рдореБрдЭреЗ рд╕рд╛рдЗрдХрд┐рд▓ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░ рджрд┐рдпрд╛ред
рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдПрдХ рдЪрд┐рддреНрд░ рдХреЛ рдбрд┐рдХреЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ libmng рдЕрдкрдиреЗ рдЕрдВрджрд░ рдЪреМрдбрд╝рд╛рдИ * bpp * рдКрдВрдЪрд╛рдИ рдХреЗ рдмрд░рд╛рдмрд░ рдмрдлрд░ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЦрджрд╛рди рдореЗрдВ, рдореБрдЭреЗ рдмрдирд╛рд╡рдЯ рдХреЛ 5548 рдореЗрдВ 5548x2048 рд▓реЛрдб рдХрд░рдирд╛ рдерд╛ред рд▓рд┐рдмрдордВрдЧ рд╕реНрд╡рдпрдВ рдЗрд╕ рдкреНрд░рд╛рд░реВрдк рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ 2048 * 2048 * 4 рдмрдлрд░ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдирд╛ рдерд╛, рдЗрд╕реЗ рдЗрд╕рдореЗрдВ рд▓реЛрдб рдХрд░рдирд╛ рдерд╛, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдбрдмрд▓-рдмрд╛рдЗрдЯ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдерд╛ред рдпрд╣ 32 рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рдХрд╛ рдУрд╡рд░рд╣реЗрдб рдирд┐рдХрд▓рд╛ (рд╕рд╛рде рд╣реА рдЫрд╡рд┐ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╡рдЬрди рднреА, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдВрдЧреНрд░рд╣ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)! рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░, рдЦреЗрд▓ рдмрд╕ рд╕реНрдореГрддрд┐ рд╕реЗ рдмрд╛рд╣рд░ рдЪрд▓рд╛ рдЧрдпрд╛ред Libmng рдХреЗ рдмрд╣реБрдд рд╣реА рдЙрд▓рдЭреА рд╣реБрдИ рдЗрдВрдЯрд░реНрдирд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦреБрджрд╛рдИ рдХрд░рдиреЗ рдкрд░, рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдореИрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рджреВрд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБ рдФрд░ рдПрдХ рддрд░рдл рджреЗрдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИ - рдФрд░ рдЕрдЧрд░ рдореИрдВ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдЕрдкрд▓реЛрдб рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рдмрд┐рдирд╛ libmng рдХреА рдорджрдж рдХреЗ, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ рдкреНрд░рд╛рд░реВрдк рд╕реНрд╡рдпрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдбрд░рд╛рд╡рдирд╛ рдирд╣реАрдВ рджрд┐рдЦрддрд╛, рд▓реЗрдХрд┐рди рд╣рдм рдкрд░ рдПрдХ рд▓реЗрдЦ рдерд╛ (рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдпрд╣ рдкрд╣рд▓реЗ рд╣реА рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛) рдЬрд╣рд╛рдВ рдЙрдиреНрд╣реЛрдВрдиреЗ рдПрдХ рд╕рдорд╛рди рдЪрд╛рд▓ рдХреА, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВред
libjng
рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ libjng рдХреЛ рдЬрдиреНрдо рджрд┐рдпрд╛ (
code.google.com/p/libjng ) - рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЬреЛ рдХреЗрд╡рд▓ рдпрд╣ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ jng рдХреИрд╕реЗ рд▓реЛрдб рдХрд░рдирд╛ рд╣реИред рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╢рдмреНрдж рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕рдореЗрдВ рдПрдХ рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рдФрд░ рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИ - рд╕реА рдореЗрдВ рд╕реНрд░реЛрддред
рдкреЗрд╢реЗрд╡рд░реЛрдВ:
- рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди;
- рдХреЙрдореНрдкреИрдХреНрдЯ - рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рд╕реНрд░реЛрдд - 74 рдХрд┐рд▓реЛрдмрд╛рдЗрдЯ (рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдмрд╛рдЗрдирд░реА);
- рдЖрдк рдмрд┐рдЯ рдЖрдХрд╛рд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдЕрд▓реНрдлрд╛ рдЪреИрдирд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ (рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдЬрдм рдЖрдкрдХреЛ 5551 рдЬреИрд╕реЗ рдкреНрд░рд╛рд░реВрдкреЛрдВ рдореЗрдВ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ);
- рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд - рдЖрдкрдХреЛ рдлрд╝рд╛рдЗрд▓ рд▓рд╛рдЗрди рдХреЛ рд▓рд╛рдЗрди рд╕реЗ рдбреАрдХреЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рд▓рд┐рдмрдкрдВрдЬ рдФрд░ рдЬреЗрдкрдЧреНрд▓рд┐рдм;
- рдбреЗрдЯрд╛ рдХреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд┐рдП рдмрд┐рдирд╛, рдмрдлрд░ рд╕реЗ рд╕реАрдзреЗ рдПрдХ рддрд╕реНрд╡реАрд░ рдХреЛ рдбреАрдХреЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЖрдк рдХреЙрд▓рдмреИрдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ рдзрд╛рд░рд╛рдУрдВ рд╕реЗ рдмреНрд▓реЙрдХ рдЙрддрд╛рд░ рд╕рдХрддреЗ рд╣реИрдВред
рдиреБрдХрд╕рд╛рди:
- рд╣рдо рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдкреНрд░рддрд┐ рдЪреИрдирд▓ 16 рдмрд┐рдЯреНрд╕ рдореЗрдВ рдбреЗрдЯрд╛ рдХреИрд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рдХрд░реЗрдВ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рд▓реЛрдб jng рдЬрд╣рд╛рдВ JPEG рдкреНрд░рддрд┐ рдирдореВрдирд╛ 12 рдмрд┐рдЯреНрд╕ рд╣реЛрдЧрд╛, рдпрд╛ рдЕрд▓реНрдлрд╛ 16 рдмрд┐рдЯреНрд╕ рд╣реЛрдЧрд╛ - рдпрд╣ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП)
- рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдкрд░ рднреА рдирд┐рд░реНрднрд░ рд╣реИ - рдЬреЗрдкреАрдЧреНрд▓рд┐рдм, рдЬрд╝реНрд▓рд┐рдмред
рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рдЬрдЧрд╣ рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬреЛ рдЖрдкрдХреЛ jga рдФрд░ рдбрдВрдк рдкрд┐рдХреНрд╕реЗрд▓ рдХреЛ рдЯреИрдЧрд╛ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдкреНрд░рд╛рд░реВрдк рд╣реИ)ред
Libjng рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЙрджрд╛рд╣рд░рдг (рдХреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЬрдм рдкреВрд░реА рддрд╕реНрд╡реАрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореЗрдореЛрд░реА рдореЗрдВ рд▓реЛрдб рд╣реИ)ред
#include "jng_load.h" void* my_jng_alloc(size_t size) { return malloc(size); } void my_jng_free(void* ptr) { free(ptr); } void my_jng_errorproc(jng_handle handle, int errorCode, unsigned long chunkName, unsigned long chunkSeq, const char* erorText) { printf("JNG error %d! chunk = %d, chunkSeq = %d, text = %s\r\n", errorCode, chunkName, chunkSeq, erorText); } jng_handle handle; handle = jng_create_from_data(NULL, imageBuffer, imageSize, my_jng_alloc, my_jng_free, my_jng_errorproc, JNG_FLAG_CRC_CRITICAL); if(!handle) { } if(!jng_read(handle)) { jng_cleanup(handle); } imageWidth = jng_get_image_width(handle); imageHeight = jng_get_image_height(handle); jng_set_out_alpha_channel_bits(handle, JNG_OUT_BITS_8); jng_set_out_color_channel_bits(handle, JNG_OUT_BITS_8); jng_set_out_color_space(handle, JNG_RGB); jng_set_color_jpeg_src_type(handle, JNG_JPEG_SRC_DEFAULT); if(!jng_start_decode(handle)) { jng_cleanup(handle); } colorBytesNum = jng_get_out_color_channel_bytes(handle); alphaBytesNum = jng_get_out_alpha_channel_bytes(handle); colorComponentsCount = jng_get_out_color_components_num(handle); if(!colorBytesNum || !colorComponentsCount) { jng_finish_decode(handle); jng_cleanup(handle); } pixelBuffer = (unsigned char*)malloc(pixelBufferSize);
рдПрдХ рддрд╕реНрд╡реАрд░ рдХреЗ рд▓рд╛рдЗрди-рдмрд╛рдп-рд▓рд╛рдЗрди рд░реАрдбрд┐рдВрдЧ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓рд╛рдЗрди-рдмрд╛рдп-рд▓рд╛рдЗрди - рдУрд╡рд░рд╣реЗрдб рд╕реЗ рдЪрд╛рд░ рдпрд╛ рдкрд╛рдВрдЪ рдмрдлрд╝рд░реНрд╕ рд╣реИрдВ рдЬреЛ рд░рдВрдЧ рдФрд░ рдЕрд▓реНрдлрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд╛рдЗрди рдкрдХрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ)ред
unsigned char* imageLinePtr = (unsigned char*)pixelBuffer; for(currentLine = 0; currentLine < imageHeight; currentLine++) { if(!jng_read_scanline(handle, imageLinePtr)) { readRes = -1; break; } imageLinePtr += rowPitch; } jng_finish_decode(handle); jng_cleanup(handle);
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
MNG рдХреА рддрд░рд╣ JNG рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╡рд┐рдЦрдВрдбреВ (рдЯреБрдХрдбрд╝реЗ) рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдЪрдВрдХ рдореЗрдВ рд╣реЗрдбрд░ рд╣реЛрддрд╛ рд╣реИ - 4 рдмрд╛рдЗрдЯреНрд╕ - рдбреЗрдЯрд╛ рдХрд╛ рдЖрдХрд╛рд░, 4 рдмрд╛рдЗрдЯреНрд╕ - рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛, рд╡реИрдХрд▓реНрдкрд┐рдХ рдбреЗрдЯрд╛ рдФрд░ 4 рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдЕрдВрдд рдореЗрдВ - crcред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ, рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдШрдЯрд╛рдирд╛ рдФрд░ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рдПрдХ рдкреНрд░рд╛рдердорд┐рдХ рдХрд╛рд░реНрдп рд╣реИред
рд╣рдо рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡рд┐рдЦрдВрдбреВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:
JHDR - рдлрд╛рдЗрд▓ рд╣реЗрдбрд░ - рдЪрд┐рддреНрд░ рдХрд╛ рдЖрдХрд╛рд░, рд╕рдВрдкреАрдбрд╝рди рдкреНрд░рд╛рд░реВрдк, рдмрд┐рдЯ рджрд░ рдФрд░ рдмрд╣реБрдд рдХреБрдЫ рдмрддрд╛рддрд╛ рд╣реИ;
JDAT - рдЪрд┐рддреНрд░ рдХрд╛ рд░рдВрдЧреАрди рдбреЗрдЯрд╛ рд╡рд╛рд▓рд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ред рд╕рд╛рдорд╛рдиреНрдп рдЬреЗрдкреАрдИрдЬреА (рдпрджрд┐ рдЖрдк рдПрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реЗрдХреНрд╕ рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдЗрд╕ рдмреНрд▓реЙрдХ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд┐рд╕реА рднреА рджрд░реНрд╢рдХ рдореЗрдВ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ);
JSEP - JDAT рд╡рд┐рдЦрдВрдбреВ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рдЙрдирдореЗрдВ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЖрда рдФрд░ рдмрд╛рд░рд╣ рдмрд┐рдЯ JPEG рдЪрд┐рддреНрд░ рд╣реЛрддреЗ рд╣реИрдВ (рдЗрд╕ рддрд░рд╣ рдХреА рд╡рд┐рдЦрдВрдбреВ рдХреЗ рдмреАрдЪ рдХреЗрд╡рд▓ JSEP рджрд┐рдЦрд╛рдИ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдЕрдиреНрдп рдбреЗрдЯрд╛ рдирд╣реАрдВ);
рдЬреЗрдбреАрдП - рдЕрд▓реНрдлрд╛ рдЪреИрдирд▓, рдЬреЗрдкреАрдИрдЬреА рдореЗрдВ рд╕рдВрдкреАрдбрд╝рд┐рдд - рд╕рдм рдХреБрдЫ рдЬреЗрдбрдбреАрдПрдЯреА рдХреЗ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдЧреНрд░реЗ рдХреЗ рд░рдВрдЧреЛрдВ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ, рдЖрда-рдмрд┐рдЯ рдЬреЗрдкреАрдИрдЬреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ;
рдЖрдИрдбреАрдПрдЯреА рдПрдХ рдЕрд▓реНрдлрд╛ рдЪреИрдирд▓ рд╣реИ, рдЬрд┐рд╕реЗ рдкреАрдПрдирдЬреА рдореЗрдВ рдкрд┐рдХреНрд╕рд▓ рдХреА рддрд░рд╣ рд╣реА рдкреИрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
IEND - рдЪрд┐рддреНрд░ рдХрд╛ рдЕрдВрддред
рдбреЗрдЯрд╛ рдХрд╛ рд░рдВрдЧ рднрд╛рдЧ рдФрд░ рдЕрд▓реНрдлрд╛ рдЪреИрдирд▓ рджреЛрдиреЛрдВ рдХреЛ рдХрдИ рд╡рд┐рдЦрдВрдбреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдкрдХреЛ рдмрд╕ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдкрдврд╝рдиреЗ рдФрд░ рдбреЗрдЯрд╛ рдХреЛ рдЧреЛрдВрдж рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
Jpeg рдореЗрдВ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ - jpeglib рдХреЛ рдпрд╣рд╛рдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рд╣рдо jpeglib рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рдбреЗрдЯрд╛ рд▓рд╛рдЗрди рдХреЛ рдбреА-рд▓рд╛рдЗрди рдХрд░реЗрдВрдЧреЗред IDAT рдХреБрдЫ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИред рд╣рдо рдХрдм рд╕реЗ рдЙрдкрд╡рд╛рд╕ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ рдпрд╣ рдПрдХ рдкреВрд░реНрдг png рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ png рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред
рдЖрдИрдбреАрдПрдЯреА рдореЗрдВ рдбреЗрдЯрд╛ рд▓рд╛рдЗрди рд╕реЗ рд▓рд╛рдЗрди рд╣реИ, рдпрд╣ zlib рдХреЗ рд╕рд╛рде рдкреИрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд▓рд╛рдЗрди рдПрдХ рдмрд╛рдЗрдЯ рдорд╛рд░реНрдХрд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИ, рдФрд░ рдлрд┐рд░ рд╕реНрд╡рдпрдВ рдбреЗрдЯрд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдбрд┐рдХреЛрдбрд┐рдВрдЧ рдЗрд╕ рддрдереНрдп рдХреЛ рдЙрдмрд╛рд▓рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╕реНрдЯреНрд░рд┐рдВрдЧ (zlib inflate) рдХреЛ рдЕрдирдкреИрдХ рдХрд░рддреЗ рд╣реИрдВ, рдкрд╣рд▓реЗ рдмрд╛рдЗрдЯ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рддреЗ рд╣реИрдВ (рдпрд╣ рдПрдХ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╡рд┐рд╖рдп рд╣реИ рдФрд░ рдЬреЛ рдкрд░рд╡рд╛рд╣ рдХрд░рддрд╛ рд╣реИ - рдореИрдВ рдЖрдкрдХреЛ pnglib рдХреЗ рдЕрдВрджрд░ рдлрд╝рд╛рдЗрд▓ pngrutil.c, рдлрд╝рдВрдХреНрд╢рди png_read_filter_row) рдореЗрдВ рджреЗрдЦрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ, рдлрд┐рд░ рдПрдХ рдмрд╛рдЗрдЯ рдореЗрдВ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдкрд┐рдХреНрд╕реЗрд▓ рдкреИрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рд╣рдо рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдмрд╛рдЗрдЯ рдореЗрдВ рдЕрдирдкреИрдХ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдмрд╛рдЗрдЯ рдпрд╛ рдПрдХ рд╢рдмреНрдж рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░реЗрдВред
рдХреБрдЫ рдлрд┐рд▓реНрдЯрд░ рдХреЛ рдкрд┐рдЫрд▓реА рдкрдВрдХреНрддрд┐ рдХреЗ рдбреЗрдЯрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ - рдЗрд╕рд▓рд┐рдП, рдУрд╡рд░рд╣реЗрдб рдХреЛ рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдкрд┐рдХреНрд╕реЗрд▓ рдкрд░ рдирд╣реАрдВ рдмрд▓реНрдХрд┐ рдбреЗрдЯрд╛ рдмрд╛рдЗрдЯреНрд╕ рдкрд░ рдХреА рдЬрд╛рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд┐рдХреНрд╕реЗрд▓ рдкреНрд░рддрд┐ рдЖрда рдмрд┐рдЯреНрд╕ рд╕реЗ рдХрдо рд╣реИ, рддреЛ рдЕрдирдкреИрдХ рдХрд░рддреЗ рд╕рдордп рдУрд╡рд░рд╣реЗрдб рдХрдо рд╣реЛрдЧрд╛ред
рд╕рд┐рдо рд╕рдм рдХреБрдЫ рдХреЗ рд▓рд┐рдП - рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдкрд╛рда рдЖрдкрдХреЗ рд▓рд┐рдП рд░реЛрдЪрдХ рдФрд░ рдЙрдкрдпреЛрдЧреА рдерд╛ред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдореИрдВрдиреЗ рдЬреЗрдПрдирдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рди рдХреЗрд╡рд▓ рд▓рд╛рдЧреВ рдкрдХреНрд╖ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдмрд▓реНрдХрд┐ рдЬрд┐рдЬреНрдЮрд╛рд╕рд╛ рдХреЗ рд▓рд┐рдП рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░ рдереЛрдбрд╝рд╛ рд╕рд╛ рднреА рдЫреБрдЖред