⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rfc2083.txt

📁 著名的RFC文档,其中有一些文档是已经翻译成中文的的.
💻 TXT
📖 第 1 页 / 共 5 页
字号:
      Source data with a precision not directly supported in PNG (for      example, 5 bit/sample truecolor) must be scaled up to the next      higher supported bit depth.  This scaling is reversible with no      loss of data, and it reduces the number of cases that decoders      have to cope with.  See Recommendations for Encoders: Sample depth      scaling (Section 9.1) and Recommendations for Decoders: Sample      depth rescaling (Section 10.4).   2.3. Image layout      Conceptually, a PNG image is a rectangular pixel array, with      pixels appearing left-to-right within each scanline, and scanlines      appearing top-to-bottom.  (For progressive display purposes, the      data may actually be transmitted in a different order; see      Interlaced data order, Section 2.6.) The size of each pixel is      determined by the bit depth, which is the number of bits per      sample in the image data.      Three types of pixel are supported:          * An indexed-color pixel is represented by a single sample            that is an index into a supplied palette.  The image bit            depth determines the maximum number of palette entries, but            not the color precision within the palette.          * A grayscale pixel is represented by a single sample that is            a grayscale level, where zero is black and the largest value            for the bit depth is white.          * A truecolor pixel is represented by three samples: red (zero            = black, max = red) appears first, then green (zero = black,            max = green), then blue (zero = black, max = blue).  The bit            depth specifies the size of each sample, not the total pixel            size.Boutell, et. al.             Informational                      [Page 6]RFC 2083            PNG: Portable Network Graphics            March 1997      Optionally, grayscale and truecolor pixels can also include an      alpha sample, as described in the next section.      Pixels are always packed into scanlines with no wasted bits      between pixels.  Pixels smaller than a byte never cross byte      boundaries; they are packed into bytes with the leftmost pixel in      the high-order bits of a byte, the rightmost in the low-order      bits.  Permitted bit depths and pixel types are restricted so that      in all cases the packing is simple and efficient.      PNG permits multi-sample pixels only with 8- and 16-bit samples,      so multiple samples of a single pixel are never packed into one      byte.  16-bit samples are stored in network byte order (MSB      first).      Scanlines always begin on byte boundaries.  When pixels have fewer      than 8 bits and the scanline width is not evenly divisible by the      number of pixels per byte, the low-order bits in the last byte of      each scanline are wasted.  The contents of these wasted bits are      unspecified.      An additional "filter type" byte is added to the beginning of      every scanline (see Filtering, Section 2.5).  The filter type byte      is not considered part of the image data, but it is included in      the datastream sent to the compression step.   2.4. Alpha channel      An alpha channel, representing transparency information on a per-      pixel basis, can be included in grayscale and truecolor PNG      images.      An alpha value of zero represents full transparency, and a value      of (2^bitdepth)-1 represents a fully opaque pixel.  Intermediate      values indicate partially transparent pixels that can be combined      with a background image to yield a composite image.  (Thus, alpha      is really the degree of opacity of the pixel.  But most people      refer to alpha as providing transparency information, not opacity      information, and we continue that custom here.)      Alpha channels can be included with images that have either 8 or      16 bits per sample, but not with images that have fewer than 8      bits per sample.  Alpha samples are represented with the same bit      depth used for the image samples.  The alpha sample for each pixel      is stored immediately following the grayscale or RGB samples of      the pixel.Boutell, et. al.             Informational                      [Page 7]RFC 2083            PNG: Portable Network Graphics            March 1997      The color values stored for a pixel are not affected by the alpha      value assigned to the pixel.  This rule is sometimes called      "unassociated" or "non-premultiplied" alpha.  (Another common      technique is to store sample values premultiplied by the alpha      fraction; in effect, such an image is already composited against a      black background.  PNG does not use premultiplied alpha.)      Transparency control is also possible without the storage cost of      a full alpha channel.  In an indexed-color image, an alpha value      can be defined for each palette entry.  In grayscale and truecolor      images, a single pixel value can be identified as being      "transparent".  These techniques are controlled by the tRNS      ancillary chunk type.      If no alpha channel nor tRNS chunk is present, all pixels in the      image are to be treated as fully opaque.      Viewers can support transparency control partially, or not at all.      See Rationale: Non-premultiplied alpha (Section 12.8),      Recommendations for Encoders: Alpha channel creation (Section      9.4), and Recommendations for Decoders: Alpha channel processing      (Section 10.8).   2.5. Filtering      PNG allows the image data to be filtered before it is compressed.      Filtering can improve the compressibility of the data.  The filter      step itself does not reduce the size of the data.  All PNG filters      are strictly lossless.      PNG defines several different filter algorithms, including "None"      which indicates no filtering.  The filter algorithm is specified      for each scanline by a filter type byte that precedes the filtered      scanline in the precompression datastream.  An intelligent encoder      can switch filters from one scanline to the next.  The method for      choosing which filter to employ is up to the encoder.      See Filter Algorithms (Chapter 6) and Rationale: Filtering      (Section 12.9).   2.6. Interlaced data order      A PNG image can be stored in interlaced order to allow progressive      display.  The purpose of this feature is to allow images to "fade      in" when they are being displayed on-the-fly.  Interlacing      slightly expands the file size on average, but it gives the user a      meaningful display much more rapidly.  Note that decoders areBoutell, et. al.             Informational                      [Page 8]RFC 2083            PNG: Portable Network Graphics            March 1997      required to be able to read interlaced images, whether or not they      actually perform progressive display.      With interlace method 0, pixels are stored sequentially from left      to right, and scanlines sequentially from top to bottom (no      interlacing).      Interlace method 1, known as Adam7 after its author, Adam M.      Costello, consists of seven distinct passes over the image.  Each      pass transmits a subset of the pixels in the image.  The pass in      which each pixel is transmitted is defined by replicating the      following 8-by-8 pattern over the entire image, starting at the      upper left corner:         1 6 4 6 2 6 4 6         7 7 7 7 7 7 7 7         5 6 5 6 5 6 5 6         7 7 7 7 7 7 7 7         3 6 4 6 3 6 4 6         7 7 7 7 7 7 7 7         5 6 5 6 5 6 5 6         7 7 7 7 7 7 7 7      Within each pass, the selected pixels are transmitted left to      right within a scanline, and selected scanlines sequentially from      top to bottom.  For example, pass 2 contains pixels 4, 12, 20,      etc. of scanlines 0, 8, 16, etc. (numbering from 0,0 at the upper      left corner).  The last pass contains the entirety of scanlines 1,      3, 5, etc.      The data within each pass is laid out as though it were a complete      image of the appropriate dimensions.  For example, if the complete      image is 16 by 16 pixels, then pass 3 will contain two scanlines,      each containing four pixels.  When pixels have fewer than 8 bits,      each such scanline is padded as needed to fill an integral number      of bytes (see Image layout, Section 2.3).  Filtering is done on      this reduced image in the usual way, and a filter type byte is      transmitted before each of its scanlines (see Filter Algorithms,      Chapter 6).  Notice that the transmission order is defined so that      all the scanlines transmitted in a pass will have the same number      of pixels; this is necessary for proper application of some of the      filters.      Caution: If the image contains fewer than five columns or fewer      than five rows, some passes will be entirely empty.  Encoders and      decoders must handle this case correctly.  In particular, filter      type bytes are only associated with nonempty scanlines; no filter      type bytes are present in an empty pass.Boutell, et. al.             Informational                      [Page 9]RFC 2083            PNG: Portable Network Graphics            March 1997      See Rationale: Interlacing (Section 12.6) and Recommendations for      Decoders: Progressive display (Section 10.9).   2.7. Gamma correction      PNG images can specify, via the gAMA chunk, the gamma      characteristic of the image with respect to the original scene.      Display programs are strongly encouraged to use this information,      plus information about the display device they are using and room      lighting, to present the image to the viewer in a way that      reproduces what the image's original author saw as closely as      possible.  See Gamma Tutorial (Chapter 13) if you aren't already      familiar with gamma issues.      Gamma correction is not applied to the alpha channel, if any.      Alpha samples always represent a linear fraction of full opacity.      For high-precision applications, the exact chromaticity of the RGB      data in a PNG image can be specified via the cHRM chunk, allowing      more accurate color matching than gamma correction alone will      provide.  See Color Tutorial (Chapter 14) if you aren't already      familiar with color representation issues.      See Rationale: Why gamma? (Section 12.7), Recommendations for      Encoders: Encoder gamma handling (Section 9.2), and      Recommendations for Decoders: Decoder gamma handling (Section      10.5).   2.8. Text strings      A PNG file can store text associated with the image, such as an      image description or copyright notice.  Keywords are used to      indicate what each text string represents.      ISO 8859-1 (Latin-1) is the character set recommended for use in      text strings [ISO-8859].  This character set is a superset of 7-      bit ASCII.      Character codes not defined in Latin-1 should not be used, because      they have no platform-independent meaning.  If a non-Latin-1 code      does appear in a PNG text string, its interpretation will vary      across platforms and decoders.  Some systems might not even be      able to display all the characters in Latin-1, but most modern      systems can.      Provision is also made for the storage of compressed text.      See Rationale: Text strings (Section 12.10).Boutell, et. al.             Informational                     [Page 10]RFC 2083            PNG: Portable Network Graphics            March 19973. File Structure   A PNG file consists of a PNG signature followed by a series of   chunks.  This chapter defines the signature and the basic properties   of chunks.  Individual chunk types are discussed in the next chapter.   3.1. PNG file signature      The first eight bytes of a PNG file always contain the following      (decimal) values:         137 80 78 71 13 10 26 10      This signature indicates that the remainder of the file contains a      single PNG image, consisting of a series of chunks beginning with      an IHDR chunk and ending with an IEND chunk.      See Rationale: PNG file signature (Section 12.11).   3.2. Chunk layout      Each chunk consists of four parts:      Length         A 4-byte unsigned integer giving the number of bytes in the         chunk's data field. The length counts only the data field, not         itself, the chunk type code, or the CRC.  Zero is a valid         length.  Although encoders and decoders should treat the length         as unsigned, its value must not exceed (2^31)-1 bytes.      Chunk Type         A 4-byte chunk type code.  For convenience in description and         in examining PNG files, type codes are restricted to consist of         uppercase and lowercase ASCII letters (A-Z and a-z, or 65-90         and 97-122 decimal).  However, encoders and decoders must treat         the codes as fixed binary values, not character strings.  For         example, it would not be correct to represent the type code         IDAT by the EBCDIC equivalents of those letters.  Additional

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -