1 README for libpng version 1.5.4 - July 7, 2011 (shared library 15.0) |
1 README for libpng version 1.6.16 - December 22, 2014 (shared library 16.0) |
2 See the note about version numbers near the top of png.h |
2 See the note about version numbers near the top of png.h |
3 |
3 |
4 See INSTALL for instructions on how to install libpng. |
4 See INSTALL for instructions on how to install libpng. |
5 |
5 |
6 Libpng comes in several distribution formats. Get libpng-*.tar.gz, |
6 Libpng comes in several distribution formats. Get libpng-*.tar.gz or |
7 libpng-*.tar.xz or libpng-*.tar.bz2 if you want UNIX-style line endings |
7 libpng-*.tar.xz or if you want UNIX-style line endings in the text files, |
8 in the text files, or lpng*.zip if you want DOS-style line endings. |
8 or lpng*.7z or lpng*.zip if you want DOS-style line endings. |
9 |
9 |
10 Version 0.89 was the first official release of libpng. Don't let the |
10 Version 0.89 was the first official release of libpng. Don't let the |
11 fact that it's the first release fool you. The libpng library has been in |
11 fact that it's the first release fool you. The libpng library has been in |
12 extensive use and testing since mid-1995. By late 1997 it had |
12 extensive use and testing since mid-1995. By late 1997 it had |
13 finally gotten to the stage where there hadn't been significant |
13 finally gotten to the stage where there hadn't been significant |
21 earlier versions if you are using a shared library. The type of the |
21 earlier versions if you are using a shared library. The type of the |
22 "filler" parameter for png_set_filler() has changed from png_byte to |
22 "filler" parameter for png_set_filler() has changed from png_byte to |
23 png_uint_32, which will affect shared-library applications that use |
23 png_uint_32, which will affect shared-library applications that use |
24 this function. |
24 this function. |
25 |
25 |
26 To avoid problems with changes to the internals of png_info_struct, |
26 To avoid problems with changes to the internals of png info_struct, |
27 new APIs have been made available in 0.95 to avoid direct application |
27 new APIs have been made available in 0.95 to avoid direct application |
28 access to info_ptr. These functions are the png_set_<chunk> and |
28 access to info_ptr. These functions are the png_set_<chunk> and |
29 png_get_<chunk> functions. These functions should be used when |
29 png_get_<chunk> functions. These functions should be used when |
30 accessing/storing the info_struct data, rather than manipulating it |
30 accessing/storing the info_struct data, rather than manipulating it |
31 directly, to avoid such problems in the future. |
31 directly, to avoid such problems in the future. |
32 |
32 |
33 It is important to note that the APIs do not make current programs |
33 It is important to note that the APIs did not make current programs |
34 that access the info struct directly incompatible with the new |
34 that access the info struct directly incompatible with the new |
35 library. However, it is strongly suggested that new programs use |
35 library, through libpng-1.2.x. In libpng-1.4.x, which was meant to |
36 the new APIs (as shown in example.c and pngtest.c), and older programs |
36 be a transitional release, members of the png_struct and the |
37 be converted to the new format, to facilitate upgrades in the future. |
37 info_struct can still be accessed, but the compiler will issue a |
|
38 warning about deprecated usage. Since libpng-1.5.0, direct access |
|
39 to these structs is not allowed, and the definitions of the structs |
|
40 reside in private pngstruct.h and pnginfo.h header files that are not |
|
41 accessible to applications. It is strongly suggested that new |
|
42 programs use the new APIs (as shown in example.c and pngtest.c), and |
|
43 older programs be converted to the new format, to facilitate upgrades |
|
44 in the future. |
38 **** |
45 **** |
39 |
46 |
40 Additions since 0.90 include the ability to compile libpng as a |
47 Additions since 0.90 include the ability to compile libpng as a |
41 Windows DLL, and new APIs for accessing data in the info struct. |
48 Windows DLL, and new APIs for accessing data in the info struct. |
42 Experimental functions include the ability to set weighting and cost |
49 Experimental functions include the ability to set weighting and cost |
75 and medium memory models. You should also note that zlib is a |
82 and medium memory models. You should also note that zlib is a |
76 compression library that is useful for more things than just PNG files. |
83 compression library that is useful for more things than just PNG files. |
77 You can use zlib as a drop-in replacement for fread() and fwrite() if |
84 You can use zlib as a drop-in replacement for fread() and fwrite() if |
78 you are so inclined. |
85 you are so inclined. |
79 |
86 |
80 zlib should be available at the same place that libpng is, or at. |
87 zlib should be available at the same place that libpng is, or at zlib.net. |
81 ftp://ftp.info-zip.org/pub/infozip/zlib |
|
82 |
88 |
83 You may also want a copy of the PNG specification. It is available |
89 You may also want a copy of the PNG specification. It is available |
84 as an RFC, a W3C Recommendation, and an ISO/IEC Standard. You can find |
90 as an RFC, a W3C Recommendation, and an ISO/IEC Standard. You can find |
85 these at http://www.libpng.org/pub/png/documents/ |
91 these at http://www.libpng.org/pub/png/documents/ |
86 |
92 |
87 This code is currently being archived at libpng.sf.net in the |
93 This code is currently being archived at libpng.sf.net in the |
88 [DOWNLOAD] area, and on CompuServe, Lib 20 (PNG SUPPORT) |
94 [DOWNLOAD] area, and at ftp://ftp.simplesystems.org. If you can't find it |
89 at GO GRAPHSUP. If you can't find it in any of those places, |
95 in any of those places, e-mail me, and I'll help you find it. |
90 e-mail me, and I'll help you find it. |
96 |
|
97 I am not a lawyer, but I believe that the Export Control Classification |
|
98 Number (ECCN) for libpng is EAR99, which means not subject to export |
|
99 controls or International Traffic in Arms Regulations (ITAR) because it |
|
100 is open source, publicly available software, that does not contain any |
|
101 encryption software. See the EAR, paragraphs 734.3(b)(3) and 734.7(b). |
91 |
102 |
92 If you have any code changes, requests, problems, etc., please e-mail |
103 If you have any code changes, requests, problems, etc., please e-mail |
93 them to me. Also, I'd appreciate any make files or project files, |
104 them to me. Also, I'd appreciate any make files or project files, |
94 and any modifications you needed to make to get libpng to compile, |
105 and any modifications you needed to make to get libpng to compile, |
95 along with a #define variable to tell what compiler/system you are on. |
106 along with a #define variable to tell what compiler/system you are on. |
103 This release was created and will be supported by myself (of course |
114 This release was created and will be supported by myself (of course |
104 based in a large way on Guy's and Andreas' earlier work), and the PNG |
115 based in a large way on Guy's and Andreas' earlier work), and the PNG |
105 development group. |
116 development group. |
106 |
117 |
107 Send comments/corrections/commendations to png-mng-implement at |
118 Send comments/corrections/commendations to png-mng-implement at |
108 lists.sourceforge.net (subscription required; visit |
119 lists.sourceforge.net (subscription required; visit |
109 https://lists.sourceforge.net/lists/listinfo/png-mng-implement |
120 https://lists.sourceforge.net/lists/listinfo/png-mng-implement |
110 to subscribe) or to glennrp at users.sourceforge.net |
121 to subscribe) or to glennrp at users.sourceforge.net |
111 |
122 |
112 You can't reach Guy, the original libpng author, at the addresses |
123 You can't reach Guy, the original libpng author, at the addresses |
113 given in previous versions of this document. He and Andreas will |
124 given in previous versions of this document. He and Andreas will |
121 to me. Send me any questions that start with "I was using libpng, |
132 to me. Send me any questions that start with "I was using libpng, |
122 and ...". If in doubt, send questions to me. I'll bounce them |
133 and ...". If in doubt, send questions to me. I'll bounce them |
123 to others, if necessary. |
134 to others, if necessary. |
124 |
135 |
125 Please do not send suggestions on how to change PNG. We have |
136 Please do not send suggestions on how to change PNG. We have |
126 been discussing PNG for sixteen years now, and it is official and |
137 been discussing PNG for nineteen years now, and it is official and |
127 finished. If you have suggestions for libpng, however, I'll |
138 finished. If you have suggestions for libpng, however, I'll |
128 gladly listen. Even if your suggestion is not used immediately, |
139 gladly listen. Even if your suggestion is not used immediately, |
129 it may be used later. |
140 it may be used later. |
130 |
141 |
131 Files in this distribution: |
142 Files in this distribution: |
165 pngtrans.c => Common data transformation functions |
176 pngtrans.c => Common data transformation functions |
166 pngwio.c => Lowest-level write I/O functions |
177 pngwio.c => Lowest-level write I/O functions |
167 pngwrite.c => High-level write functions |
178 pngwrite.c => High-level write functions |
168 pngwtran.c => Write data transformations |
179 pngwtran.c => Write data transformations |
169 pngwutil.c => Write utility functions |
180 pngwutil.c => Write utility functions |
|
181 arm => Contains optimized code for the ARM platform |
170 contrib => Contributions |
182 contrib => Contributions |
|
183 examples => Example programs |
171 gregbook => source code for PNG reading and writing, from |
184 gregbook => source code for PNG reading and writing, from |
172 Greg Roelofs' "PNG: The Definitive Guide", |
185 Greg Roelofs' "PNG: The Definitive Guide", |
173 O'Reilly, 1999 |
186 O'Reilly, 1999 |
174 msvctest => Builds and runs pngtest using a MSVC workspace |
187 libtests => Test programs |
175 pngminus => Simple pnm2png and png2pnm programs |
188 pngminim => Minimal decoder, encoder, and progressive decoder |
176 pngsuite => Test images |
189 programs demonstrating use of pngusr.dfa |
177 visupng => Contains a MSVC workspace for VisualPng |
190 pngminus => Simple pnm2png and png2pnm programs |
|
191 pngsuite => Test images |
|
192 tools => Various tools |
|
193 visupng => Contains a MSVC workspace for VisualPng |
178 projects => Contains project files and workspaces for |
194 projects => Contains project files and workspaces for |
179 building a DLL |
195 building a DLL |
180 cbuilder5 => Contains a Borland workspace for building |
196 owatcom => Contains a WATCOM project for building libpng |
181 libpng and zlib |
|
182 visualc6 => Contains a Microsoft Visual C++ (MSVC) |
|
183 workspace for building libpng and zlib |
|
184 visualc71 => Contains a Microsoft Visual C++ (MSVC) |
197 visualc71 => Contains a Microsoft Visual C++ (MSVC) |
185 workspace for building libpng and zlib |
198 workspace for building libpng and zlib |
186 xcode => Contains an Apple xcode |
199 vstudio => Contains a Microsoft Visual C++ (MSVC) |
187 workspace for building libpng and zlib |
200 workspace for building libpng and zlib |
188 scripts => Directory containing scripts for building libpng: |
201 scripts => Directory containing scripts for building libpng: |
189 (see scripts/README.txt for the list of scripts) |
202 (see scripts/README.txt for the list of scripts) |
190 |
203 |
191 Good luck, and happy coding. |
204 Good luck, and happy coding. |