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

@georgedrpg/bulk-process-images

v1.3.3

Published

bulk process images with sharp

Downloads

9

Readme

**⚠ WARNING: this script writes files on your hard drive, make sure it won't overwrite important files. Make sure outputPath is different to inputPath.

Bulk process images

There are 2 options, install as npm module, and use as a CLI program.

Install as npm module

npm i @georgedrpg/bulk-process-images

Import into your project

import processImages from '@georgedrpg/bulk-process-images'

Or if no ESM support use:

const processImages = require('@georgedrpg/bulk-process-images').default

Call with these arguments (or use defaults)

inputPath (default: 'inputs') outputPath (default: 'outputs') allowedExts: [".png"] pipeline:

[
  {
    action: 'flip'
  },
  {
    action: 'blur',
    args: [
      10
    ]
  },
]

For pipeline options see sharp API. Use format: { action: string, args: any[] }

For example:

const width = 64;
processImages({
  inputPath: 'large_images',
  outputPath: 'build/images',
  allowedExts: ['.png', '.jpeg', '.jpg'],
  pipeline: [{action:'resize', args:[width]}]
  suffix: '_'+width+'w' })
processImages({
  inputPath: 'png_images',
  outputPath: 'build/images',
  allowedExts: ['.png'],
  pipeline: [{action:'toFormat', args:['jpg']}],
  suffix: '',
  newExtension: 'jpg'
})

Use as a CLI program

npm i @georgedrpg/bulk-process-images -g

bulk-process-images <option>=<value>

Options:

i - input folder

o - output folder

pipeline - commands to process the images with, see sharp API in format [...["action", [...args]]]

action would be the name of the sharp operation e.g. sharp().resize(300) can be described with pipeline='[["resize", [300]]]'

exts - Allowed extensions e.g. [".png", ".jpg", ".jpeg"]

suffix - string added to end of output filenames (before the extension)

newExtension - if specified, filename extension will be set to this (doesn't alter image format, use in combination with pipeline 'toFormat' action instead.)

dry - dry run, don't actually process the images

logLevel - "verbose" | "none" (default: "verbose") - console log level

For example:

bulk-process-images i=./inputs o=./outputs pipeline='[["resize", [32]],["blur", [1]]]' exts='[".png"]'

The pipeline and exts arguments take stringified JSON as input, so you might want to run JSON.stringify(value) on your value first. If adding it to an npm package.json script, you will need to ensure inner double quotes are escaped with backslash ''.

Notes

This program is not designed to handle overwriting images, and can end up corrupting images without outputting anything useful if the output folder+filename is the same as the input folder+filename. Make sure to use a different output and input folder, and handle overwriting your input folder yourself if needed.

TODO:

  • Needs automated tests

  • Need to make sure paths resolve correctly and odd input/output paths don't break

  • Separate CLI and importable NPM module into separate modules