npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

image-size-png

v1.1.1

Published

get dimensions of png image file

Downloads

3

Readme

image-size-png

A Node module to get dimensions of png files.

This is a fork of https://github.com/image-size/image-size, and only offers a subset of features.

But why?

While supporting all the formats is great (which image-size does), sometimes we only need support for 1 or 2 specific formats. In that case, it would be performant to omit all the dead code.

Supported formats

Only PNG is supported.

Programmatic Usage

npm install image-size-png --save

or

yarn add image-size-png

Synchronous

const sizeOf = require("image-size-png")
const dimensions = sizeOf("images/funny-cats.png")
console.log(dimensions.width, dimensions.height)

Asynchronous

const sizeOf = require("image-size-png")
sizeOf("images/funny-cats.png", function (err, dimensions) {
  console.log(dimensions.width, dimensions.height)
})

NOTE: The asynchronous version doesn't work if the input is a Buffer. Use synchronous version instead.

Also, the asynchronous functions have a default concurrency limit of 100 To change this limit, you can call the setConcurrency function like this:

const sizeOf = require("image-size-png")
sizeOf.setConcurrency(123456)

Using promises (nodejs 10.x+)

const { promisify } = require("util")
const sizeOf = promisify(require("image-size-png"))
sizeOf("images/funny-cats.png")
  .then((dimensions) => {
    console.log(dimensions.width, dimensions.height)
  })
  .catch((err) => console.error(err))

Async/Await (Typescript & ES7)

const { promisify } = require("util")
const sizeOf = promisify(require("image-size-png"))(async () => {
  try {
    const dimensions = await sizeOf("images/funny-cats.png")
    console.log(dimensions.width, dimensions.height)
  } catch (err) {
    console.error(err)
  }
})().then((c) => console.log(c))

Multi-size

If the target file is an icon (.ico) or a cursor (.cur), the width and height will be the ones of the first found image.

An additional images array is available and returns the dimensions of all the available images

const sizeOf = require("image-size-png")
const images = sizeOf("images/multi-size.ico").images
for (const dimensions of images) {
  console.log(dimensions.width, dimensions.height)
}

Using a URL

const url = require("url")
const http = require("http")

const sizeOf = require("image-size-png")

const imgUrl = "http://my-amazing-website.com/image.jpeg"
const options = url.parse(imgUrl)

http.get(options, function (response) {
  const chunks = []
  response
    .on("data", function (chunk) {
      chunks.push(chunk)
    })
    .on("end", function () {
      const buffer = Buffer.concat(chunks)
      console.log(sizeOf(buffer))
    })
})

You can optionally check the buffer lengths & stop downloading the image after a few kilobytes. You don't need to download the entire image

Disabling certain image types

const imageSize = require("image-size-png")
imageSize.disableTypes(["tiff", "ico"])

Disabling all file-system reads

const imageSize = require("image-size-png")
imageSize.disableFS(true)

JPEG image orientation

If the orientation is present in the JPEG EXIF metadata, it will be returned by the function. The orientation value is a number between 1 and 8 representing a type of orientation.

const sizeOf = require("image-size-png")
const dimensions = sizeOf("images/photo.jpeg")
console.log(dimensions.orientation)

Command-Line Usage (CLI)

npm install image-size-png --global

or

yarn global add image-size-png

followed by

image-size-png image1 [image2] [image3] ...

Credits

Huge props to image-size library.

[Contributors]

All contributors to image-size are contributors to image-size-png.