亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? libpng.txt

?? 一款最完整的工業組態軟源代碼
?? TXT
?? 第 1 頁 / 共 5 頁
字號:
The PNG specification allows the width and height of an image to be as
large as 2^31-1 (0x7fffffff), or about 2.147 billion rows and columns.
Since very few applications really need to process such large images,
we have imposed an arbitrary 1-million limit on rows and columns.
Larger images will be rejected immediately with a png_error() call. If
you wish to override this limit, you can use

   png_set_user_limits(png_ptr, width_max, height_max);

to set your own limits, or use width_max = height_max = 0x7fffffffL
to allow all valid dimensions (libpng may reject some very large images
anyway because of potential buffer overflow conditions).

You should put this statement after you create the PNG structure and
before calling png_read_info(), png_read_png(), or png_process_data().
If you need to retrieve the limits that are being applied, use

   width_max = png_get_user_width_max(png_ptr);
   height_max = png_get_user_height_max(png_ptr);

Unknown-chunk handling

Now you get to set the way the library processes unknown chunks in the
input PNG stream. Both known and unknown chunks will be read.  Normal
behavior is that known chunks will be parsed into information in
various info_ptr members; unknown chunks will be discarded. To change
this, you can call:

    png_set_keep_unknown_chunks(png_ptr, keep,
        chunk_list, num_chunks);
    keep       - 0: do not handle as unknown
                 1: do not keep
                 2: keep only if safe-to-copy
                 3: keep even if unsafe-to-copy
               You can use these definitions:
                 PNG_HANDLE_CHUNK_AS_DEFAULT   0
                 PNG_HANDLE_CHUNK_NEVER        1
                 PNG_HANDLE_CHUNK_IF_SAFE      2
                 PNG_HANDLE_CHUNK_ALWAYS       3
    chunk_list - list of chunks affected (a byte string,
                 five bytes per chunk, NULL or '\0' if
                 num_chunks is 0)
    num_chunks - number of chunks affected; if 0, all
                 unknown chunks are affected.  If nonzero,
                 only the chunks in the list are affected

Unknown chunks declared in this way will be saved as raw data onto a
list of png_unknown_chunk structures.  If a chunk that is normally
known to libpng is named in the list, it will be handled as unknown,
according to the "keep" directive.  If a chunk is named in successive
instances of png_set_keep_unknown_chunks(), the final instance will
take precedence.  The IHDR and IEND chunks should not be named in
chunk_list; if they are, libpng will process them normally anyway.

The high-level read interface

At this point there are two ways to proceed; through the high-level
read interface, or through a sequence of low-level read operations.
You can use the high-level interface if (a) you are willing to read
the entire image into memory, and (b) the input transformations
you want to do are limited to the following set:

    PNG_TRANSFORM_IDENTITY      No transformation
    PNG_TRANSFORM_STRIP_16      Strip 16-bit samples to
                                8 bits
    PNG_TRANSFORM_STRIP_ALPHA   Discard the alpha channel
    PNG_TRANSFORM_PACKING       Expand 1, 2 and 4-bit
                                samples to bytes
    PNG_TRANSFORM_PACKSWAP      Change order of packed
                                pixels to LSB first
    PNG_TRANSFORM_EXPAND        Perform set_expand()
    PNG_TRANSFORM_INVERT_MONO   Invert monochrome images
    PNG_TRANSFORM_SHIFT         Normalize pixels to the
                                sBIT depth
    PNG_TRANSFORM_BGR           Flip RGB to BGR, RGBA
                                to BGRA
    PNG_TRANSFORM_SWAP_ALPHA    Flip RGBA to ARGB or GA
                                to AG
    PNG_TRANSFORM_INVERT_ALPHA  Change alpha from opacity
                                to transparency
    PNG_TRANSFORM_SWAP_ENDIAN   Byte-swap 16-bit samples

(This excludes setting a background color, doing gamma transformation,
dithering, and setting filler.)  If this is the case, simply do this:

    png_read_png(png_ptr, info_ptr, png_transforms, NULL)

where png_transforms is an integer containing the logical OR of
some set of transformation flags.  This call is equivalent to png_read_info(),
followed the set of transformations indicated by the transform mask,
then png_read_image(), and finally png_read_end().

(The final parameter of this call is not yet used.  Someday it might point
to transformation parameters required by some future input transform.)

You must use png_transforms and not call any png_set_transform() functions
when you use png_read_png().

After you have called png_read_png(), you can retrieve the image data
with

   row_pointers = png_get_rows(png_ptr, info_ptr);

where row_pointers is an array of pointers to the pixel data for each row:

   png_bytep row_pointers[height];

If you know your image size and pixel size ahead of time, you can allocate
row_pointers prior to calling png_read_png() with

   if (height > PNG_UINT_32_MAX/png_sizeof(png_byte))
      png_error (png_ptr,
         "Image is too tall to process in memory");
   if (width > PNG_UINT_32_MAX/pixel_size)
      png_error (png_ptr,
         "Image is too wide to process in memory");
   row_pointers = png_malloc(png_ptr,
      height*png_sizeof(png_bytep));
   for (int i=0; i<height, i++)
      row_pointers[i]=png_malloc(png_ptr,
         width*pixel_size);
   png_set_rows(png_ptr, info_ptr, &row_pointers);

Alternatively you could allocate your image in one big block and define
row_pointers[i] to point into the proper places in your block.

If you use png_set_rows(), the application is responsible for freeing
row_pointers (and row_pointers[i], if they were separately allocated).

If you don't allocate row_pointers ahead of time, png_read_png() will
do it, and it'll be free'ed when you call png_destroy_*().

The low-level read interface

If you are going the low-level route, you are now ready to read all
the file information up to the actual image data.  You do this with a
call to png_read_info().

    png_read_info(png_ptr, info_ptr);

This will process all chunks up to but not including the image data.

Querying the info structure

Functions are used to get the information from the info_ptr once it
has been read.  Note that these fields may not be completely filled
in until png_read_end() has read the chunk data following the image.

    png_get_IHDR(png_ptr, info_ptr, &width, &height,
       &bit_depth, &color_type, &interlace_type,
       &compression_type, &filter_method);

    width          - holds the width of the image
                     in pixels (up to 2^31).
    height         - holds the height of the image
                     in pixels (up to 2^31).
    bit_depth      - holds the bit depth of one of the
                     image channels.  (valid values are
                     1, 2, 4, 8, 16 and depend also on
                     the color_type.  See also
                     significant bits (sBIT) below).
    color_type     - describes which color/alpha channels
                         are present.
                     PNG_COLOR_TYPE_GRAY
                        (bit depths 1, 2, 4, 8, 16)
                     PNG_COLOR_TYPE_GRAY_ALPHA
                        (bit depths 8, 16)
                     PNG_COLOR_TYPE_PALETTE
                        (bit depths 1, 2, 4, 8)
                     PNG_COLOR_TYPE_RGB
                        (bit_depths 8, 16)
                     PNG_COLOR_TYPE_RGB_ALPHA
                        (bit_depths 8, 16)

                     PNG_COLOR_MASK_PALETTE
                     PNG_COLOR_MASK_COLOR
                     PNG_COLOR_MASK_ALPHA

    filter_method  - (must be PNG_FILTER_TYPE_BASE
                     for PNG 1.0, and can also be
                     PNG_INTRAPIXEL_DIFFERENCING if
                     the PNG datastream is embedded in
                     a MNG-1.0 datastream)
    compression_type - (must be PNG_COMPRESSION_TYPE_BASE
                     for PNG 1.0)
    interlace_type - (PNG_INTERLACE_NONE or
                     PNG_INTERLACE_ADAM7)
    Any or all of interlace_type, compression_type, of
    filter_method can be NULL if you are
    not interested in their values.

    channels = png_get_channels(png_ptr, info_ptr);
    channels       - number of channels of info for the
                     color type (valid values are 1 (GRAY,
                     PALETTE), 2 (GRAY_ALPHA), 3 (RGB),
                     4 (RGB_ALPHA or RGB + filler byte))
    rowbytes = png_get_rowbytes(png_ptr, info_ptr);
    rowbytes       - number of bytes needed to hold a row

    signature = png_get_signature(png_ptr, info_ptr);
    signature      - holds the signature read from the
                     file (if any).  The data is kept in
                     the same offset it would be if the
                     whole signature were read (i.e. if an
                     application had already read in 4
                     bytes of signature before starting
                     libpng, the remaining 4 bytes would
                     be in signature[4] through signature[7]
                     (see png_set_sig_bytes())).


    width            = png_get_image_width(png_ptr,
                         info_ptr);
    height           = png_get_image_height(png_ptr,
                         info_ptr);
    bit_depth        = png_get_bit_depth(png_ptr,
                         info_ptr);
    color_type       = png_get_color_type(png_ptr,
                         info_ptr);
    filter_method    = png_get_filter_type(png_ptr,
                         info_ptr);
    compression_type = png_get_compression_type(png_ptr,
                         info_ptr);
    interlace_type   = png_get_interlace_type(png_ptr,
                         info_ptr);


These are also important, but their validity depends on whether the chunk
has been read.  The png_get_valid(png_ptr, info_ptr, PNG_INFO_<chunk>) and
png_get_<chunk>(png_ptr, info_ptr, ...) functions return non-zero if the
data has been read, or zero if it is missing.  The parameters to the
png_get_<chunk> are set directly if they are simple data types, or a pointer
into the info_ptr is returned for any complex types.

    png_get_PLTE(png_ptr, info_ptr, &palette,
                     &num_palette);
    palette        - the palette for the file
                     (array of png_color)
    num_palette    - number of entries in the palette

    png_get_gAMA(png_ptr, info_ptr, &gamma);
    gamma          - the gamma the file is written
                     at (PNG_INFO_gAMA)

    png_get_sRGB(png_ptr, info_ptr, &srgb_intent);
    srgb_intent    - the rendering intent (PNG_INFO_sRGB)
                     The presence of the sRGB chunk
                     means that the pixel data is in the
                     sRGB color space.  This chunk also
                     implies specific values of gAMA and
                     cHRM.

    png_get_iCCP(png_ptr, info_ptr, &name,
       &compression_type, &profile, &proflen);
    name            - The profile name.
    compression     - The compression type; always
                      PNG_COMPRESSION_TYPE_BASE for PNG 1.0.
                      You may give NULL to this argument to
                      ignore it.
    profile         - International Color Consortium color
                      profile data. May contain NULs.
    proflen         - length of profile data in bytes.

    png_get_sBIT(png_ptr, info_ptr, &sig_bit);
    sig_bit        - the number of significant bits for
                     (PNG_INFO_sBIT) each of the gray,
                     red, green, and blue channels,
                     whichever are appropriate for the
                     given color type (png_color_16)

    png_get_tRNS(png_ptr, info_ptr, &trans, &num_trans,
                     &trans_values);
    trans          - array of transparent entries for
                     palette (PNG_INFO_tRNS)
    trans_values   - graylevel or color sample values of
                     the single transparent color for
                     non-paletted images (PNG_INFO_tRNS)
    num_trans      - number of transparent entries
                     (PNG_INFO_tRNS)

    png_get_hIST(png_ptr, info_ptr, &hist);
                     (PNG_INFO_hIST)
    hist           - histogram of palette (array of
                     png_uint_16)

    png_get_tIME(png_ptr, info_ptr, &mod_time);
    mod_time       - time image was last modified
                    (PNG_VALID_tIME)

    png_get_bKGD(png_ptr, info_ptr, &background);
    background     - background color (PNG_VALID_bKGD)
                     valid 16-bit red, green and blue
                     values, regardless of color_type

    num_comments   = png_get_text(png_ptr, info_ptr,
                     &text_ptr, &num_text);
    num_comments   - number of comments
    text_ptr       - array of png_text holding image
                     comments
    text_ptr[i].compression - type of compression used
                 on "text" PNG_TEXT_COMPRESSION_NONE
                           PNG_TEXT_COMPRESSION_zTXt
                           PNG_ITXT_COMPRESSION_NONE
                           PNG_ITXT_COMPRESSION_zTXt
    text_ptr[i].key   - keyword for comment.  Must contain
                         1-79 characters.
    text_ptr[i].text  - text comments for current

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美视频精品在线| 91精品综合久久久久久| 91麻豆精品国产91久久久资源速度 | 亚洲啪啪综合av一区二区三区| 无吗不卡中文字幕| 91丨porny丨中文| 久久精品视频在线看| 日韩专区一卡二卡| 在线观看视频欧美| 国产精品久久777777| 精品一区二区三区在线观看| 欧美色网站导航| 亚洲欧美精品午睡沙发| 国产成人在线网站| 久久综合久久99| 另类小说视频一区二区| 欧美日韩国产三级| 亚洲大片在线观看| 在线观看三级视频欧美| 亚洲视频在线一区观看| 成人av网站大全| 亚洲国产岛国毛片在线| 国产乱色国产精品免费视频| 精品99久久久久久| 理论片日本一区| 日韩欧美另类在线| 日本不卡视频一二三区| 欧美军同video69gay| 婷婷国产v国产偷v亚洲高清| 欧美日本在线看| 爽好久久久欧美精品| 91麻豆精品久久久久蜜臀| 日本成人超碰在线观看| 欧美mv和日韩mv的网站| 国产精品1区二区.| 欧美高清在线一区二区| 99热99精品| 一区二区久久久久久| 欧美日韩在线精品一区二区三区激情 | 91国在线观看| 亚洲国产中文字幕| 制服.丝袜.亚洲.另类.中文 | 久久青草国产手机看片福利盒子| 久久99热99| 国产偷国产偷精品高清尤物| av电影在线观看一区| 亚洲黄网站在线观看| 欧美日韩国产一二三| 久久精品国产久精国产| 日韩一二三区不卡| 成人少妇影院yyyy| 亚洲午夜激情网站| 日韩欧美成人一区二区| 成人一区在线观看| 亚洲bt欧美bt精品| 久久综合五月天婷婷伊人| 91片黄在线观看| 日本va欧美va精品发布| 欧美高清在线视频| 欧美日韩高清在线| 国产精品白丝jk黑袜喷水| 尤物av一区二区| 2023国产精华国产精品| 色综合久久天天综合网| 免费日本视频一区| 91精品国产麻豆国产自产在线| 精品亚洲aⅴ乱码一区二区三区| 国产精品二三区| 日韩一级高清毛片| 色婷婷综合五月| 国产高清一区日本| 亚洲高清一区二区三区| 国产亚洲女人久久久久毛片| 欧美丝袜自拍制服另类| 国产成人三级在线观看| 午夜精品福利在线| 亚洲视频一二三区| 久久久久久久久久久99999| 在线视频观看一区| 成人免费观看视频| 久久99久久久久久久久久久| 一级做a爱片久久| 国产欧美精品区一区二区三区| 欧美日韩精品专区| a在线播放不卡| 国产精品一区二区久久不卡| 日韩电影一区二区三区| 亚洲美女电影在线| 国产精品久久久久久久裸模| 日韩欧美国产麻豆| 337p亚洲精品色噜噜狠狠| 一本久道久久综合中文字幕| 国产精品一区二区你懂的| 久久国产婷婷国产香蕉| 日韩经典一区二区| 午夜私人影院久久久久| 亚洲一区二区欧美日韩 | 久久综合久久鬼色| 日韩一区二区三区视频在线| 91久久香蕉国产日韩欧美9色| 成人av中文字幕| 成人av在线影院| 成人精品gif动图一区| 成人免费视频免费观看| 国产黄色91视频| 国产一区二区三区不卡在线观看| 麻豆国产91在线播放| 欧美aⅴ一区二区三区视频| 亚洲国产日日夜夜| 亚洲图片欧美一区| 性感美女久久精品| 日韩va亚洲va欧美va久久| 日本在线不卡视频一二三区| 午夜精品国产更新| 奇米影视7777精品一区二区| 日韩国产高清在线| 久久av资源网| 国产黄色成人av| 成人av电影免费在线播放| 91丨国产丨九色丨pron| 欧美自拍偷拍一区| 91麻豆精品国产91久久久久久| 91精品国模一区二区三区| 日韩欧美中文一区| 久久久久久亚洲综合| 国产精品久久午夜| 亚洲免费观看在线观看| 亚洲电影在线播放| 久草在线在线精品观看| 丰满亚洲少妇av| 91国偷自产一区二区三区成为亚洲经典| 亚洲电影在线播放| 国产精品久久久久久户外露出 | 成人妖精视频yjsp地址| 成人少妇影院yyyy| 欧美亚洲国产一区在线观看网站| 欧美日韩另类国产亚洲欧美一级| 欧美一级专区免费大片| 国产日韩av一区二区| 亚洲综合免费观看高清完整版 | 国产精品一区免费视频| 9久草视频在线视频精品| 欧美在线观看禁18| 精品福利av导航| 亚洲欧美日韩国产综合在线| 日韩精品欧美精品| 成人小视频免费在线观看| 欧美视频一区在线| 久久精品视频在线免费观看| 亚洲综合久久久| 国产资源在线一区| 欧美吞精做爰啪啪高潮| 国产欧美日韩综合精品一区二区| 亚洲精选一二三| 国产在线播放一区二区三区| 在线观看免费成人| 国产欧美va欧美不卡在线| 午夜激情一区二区三区| 国产·精品毛片| 日韩一区二区免费电影| 亚洲欧美怡红院| 黄一区二区三区| 欧美日韩在线免费视频| 中文字幕av资源一区| 日本成人在线电影网| 日本乱人伦一区| 中文字幕不卡三区| 狠狠狠色丁香婷婷综合激情| 欧美视频一区在线观看| 一区视频在线播放| 国产一区二区三区观看| 欧美一区二区日韩| 亚洲一级不卡视频| 99国产欧美久久久精品| 国产亚洲精品中文字幕| 麻豆91免费观看| 欧美挠脚心视频网站| 一区二区三区视频在线看| 成人av小说网| 国产欧美日产一区| 国产一区三区三区| 精品久久国产97色综合| 日韩成人午夜电影| 欧美精品亚洲一区二区在线播放| 亚洲精品视频免费观看| av成人动漫在线观看| 国产亚洲精品aa| 国产成人一级电影| 国产日本欧洲亚洲| 国产精品一区二区在线观看网站| 欧美电视剧免费观看| 日av在线不卡| 日韩久久免费av| 久久 天天综合| 久久嫩草精品久久久精品| 国产精品1区二区.| 国产精品视频一二| 99re成人精品视频| 亚洲一区二区在线观看视频 | 日韩电影一区二区三区|