NAME

Image::Leptonica::Func::webpio

VERSION

version 0.04

webpio.c

webpio.c

  Reading WebP
        PIX             *pixReadStreamWebP()
        PIX             *pixReadMemWebP()

  Reading WebP header
        l_int32          readHeaderWebP()

  Writing WebP
        l_int32          pixWriteWebP()  [ special top level ]
        l_int32          pixWriteStreamWebP()
        l_int32          pixWriteMemWebP()

FUNCTIONS

pixReadMemWebP

PIX * pixReadMemWebP ( const l_uint8 *filedata, size_t filesize )

pixReadMemWebP()

    Input:  filedata (webp compressed data in memory)
            filesize (number of bytes in data)
    Return: pix (32 bpp), or null on error

Notes:
    (1) When the encoded data only has 3 channels (no alpha),
        WebPDecodeRGBAInto() generates a raster of 32-bit pixels, with
        the alpha channel set to opaque (255).
    (2) We don't need to use the gnu runtime functions like fmemopen()
        for redirecting data from a stream to memory, because
        the webp library has been written with memory-to-memory
        functions at the lowest level (which is good!).  And, in
        any event, fmemopen() doesn't work with l_binaryReadStream().

pixReadStreamWebP

PIX * pixReadStreamWebP ( FILE *fp )

pixReadStreamWebP()

    Input:  stream corresponding to WebP image
    Return: pix (32 bpp), or null on error

pixWriteMemWebP

l_int32 pixWriteMemWebP ( l_uint8 **pencdata, size_t *pencsize, PIX *pixs, l_int32 quality, l_int32 lossless )

pixWriteMemWebP()

    Input:  &encdata (<return> webp encoded data of pixs)
            &encsize (<return> size of webp encoded data)
            pixs (any depth, cmapped OK)
            quality (0 - 100; default ~80)
            lossless (use 1 for lossless; 0 for lossy)
    Return: 0 if OK, 1 on error

Notes:
    (1) Lossless and lossy encoding are entirely different in webp.
        @quality applies to lossy, and is ignored for lossless.
    (2) The input image is converted to RGB if necessary.  If spp == 3,
        we set the alpha channel to fully opaque (255), and
        WebPEncodeRGBA() then removes the alpha chunk when encoding,
        setting the internal header field has_alpha to 0.

pixWriteStreamWebP

l_int32 pixWriteStreamWebP ( FILE *fp, PIX *pixs, l_int32 quality, l_int32 lossless )

pixWriteStreamWebP()

    Input:  stream
            pixs  (all depths)
            quality (0 - 100; default ~80)
            lossless (use 1 for lossless; 0 for lossy)
    Return: 0 if OK, 1 on error

Notes:
    (1) See pixWriteMemWebP() for details.
    (2) Use 'free', and not leptonica's 'FREE', for all heap data
        that is returned from the WebP library.

pixWriteWebP

l_int32 pixWriteWebP ( const char *filename, PIX *pixs, l_int32 quality, l_int32 lossless )

pixWriteWebP()

    Input:  filename
            pixs
            quality (0 - 100; default ~80)
            lossless (use 1 for lossless; 0 for lossy)
    Return: 0 if OK, 1 on error

Notes:
    (1) Special top-level function allowing specification of quality.

readHeaderWebP

l_int32 readHeaderWebP ( const char *filename, l_int32 *pw, l_int32 *ph, l_int32 *pspp )

readHeaderWebP()

    Input:  filename
            &w (<return> width)
            &h (<return> height)
            &spp (<return> spp (3 or 4))
    Return: 0 if OK, 1 on error

AUTHOR

Zakariyya Mughal <zmughal@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2014 by Zakariyya Mughal.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.