Necessary Package Manager

    webpinfo
    TypeScript icon, indicating that this package has built-in type declarations

    2.0.0 • Public • Published

    node-webpinfo

    Build Status Coverage Status codecov.io Semantic Release enabled Renovate enabled Known Vulnerabilities MIT license

    Node.js Stream based WebP Container Parser.

    node-webpinfo Example webpinfo (libwebp)
    Output of node-webpinfo Output of webpinfo

    Sponsor

    Install

    $ npm install webpinfo

    Supported WebP Formats

    • Simple File Format (Lossy)
    • Simple File Format (Lossless)
    • Extended File Format (e.g. Animated WebP)

    Supported WebP Chunks

    • VP8
    • VP8L
    • VP8X
    • ANIM
    • ANMF
    • ALPH
    • ICCP
    • EXIF
    • XMP

    Usage

    Promise interface

    import { WebPInfo } from "webpinfo";
     
    // local file path
    const info = await WebPInfo.from("/some/local/file/path.webp");
    // url
    const info = await WebPInfo.from("https://example.com/some/file/path.webp");
    // buffer
    const info = await WebPInfo.from(buf);
    // readable stream
    const info = await WebPInfo.from(fs.createReadStream(path));
    console.log("INFO: ", info);

    Stream interface

    import * as http from "http";
    import { WebPInfo } from "webpinfo";
     
    http.get("http://www.gstatic.com/webp/gallery/1.webp", (res) => {
      if (res.statusCode !== 200) {
        console.log("unexpected status code: ", res.statusCode);
        return;
      }
     
      res.pipe(new WebPInfo())
        .on("error", (e) => console.log("error", e))
        .on("riff", (riff) => console.log("riff", riff))
        .on("chunk", (chunk) => console.log("chunk", chunk))
        .on("format", (format) => console.log("format", format));
    });

    API

    Please refer detailed type definitions on src/webpinfo.ts.

    WebPInfo => WritableStream

    Basically WebPInfo is WritableStream.

    WebPInfo.from(input: string | Buffer | ReadableStream) => Promise<WebP>

    Parse WebPInfo from given input. Input can be local file path, url, Buffer, or Readable Stream.

    WebPInfo.isAnimated(input: string | Buffer | ReadableStream) => Promise<boolean>

    Return true if given input contains any animation frame.

    WebPInfo.isLossless(input: string | Buffer | ReadableStream) => Promise<boolean>

    Return true if given buffer contains VP8L chunk.

    Stream Events

    riff

    emitted after parsing riff header.

    chunk

    emitted after parsing WebP chunk

    format

    • Event Payload: WebP

    emitted after all WebP chunks have parsed

    Related

    • mooyoul/is-webp-extended - Extended version of is-webp package which supports Animated WebP. Compatible with Browser environment (e.g. File, ArrayBuffer)

    Changelog

    See CHANGELOG.

    Debugging

    Set DEBUG environment variable to webpinfo. You will be able to see debug messages on your console.

    $ env DEBUG='webpinfo' node your-app.js

    Testing

    $ npm run test

    ... OR

    $ npm run lint # Check lint 
    $ npm run coverage # Run test & generate code coverage report 

    Build

    $ npm run build

    License

    MIT

    See full license on mooyoul.mit-license.org

    Install

    npm i webpinfo

    DownloadsWeekly Downloads

    49

    Version

    2.0.0

    License

    MIT

    Unpacked Size

    64.2 kB

    Total Files

    13

    Last publish

    Collaborators

    • mooyoul