Code Monkey home page Code Monkey logo

tinypng-cli's Introduction

TinyPNG CLI

Handy command line tool for shrinking PNG images using the TinyPNG API

Installation

npm install -g tinypng-cli

Preamble

To use TinyPNG CLI, you need an API key for TinyPNG. You can get one at https://tinypng.com/developers.

Usage

TinyPNG CLI allows you to provide your API key in two different ways. The more convenient one is to save the API key into a file called .tinypng within your home directory. The other way is to provide it as an option while running the CLI.

tinypng demo.png -k E99a18c4f8cb3EL5f2l08u368_922e03

To shrink all PNG images within the current directory.

tinypng .

To shrink all PNG images within the current directory and subdirectoies, use the -r flag

tinypng . -r

To shrink all PNG images within a specific directory (assets/img in this example), you may run the following command.

tinypng assets/img

Need to limit the number of compressions at a time? Use the -m, --max flag:

tinypng assets/img --max 100

You may also provide multiple directories.

tinypng assets/img1 assets/img2

To shrink a single PNG image (assets/img/demo.png in this example), you may run the following command.

tinypng assets/img/demo.png

You may also provide multiple single PNG images.

tinypng assets/img/demo1.png assets/img/demo2.png

To resize an image, use the --width and/or --height flag.

tinypng assets/img/demo.png --width 123
tinypng assets/img/demo.png --height 123
tinypng assets/img/demo.png --width 123 --height 123

By default, this tool caches a map of all compressed images sent to the API in ~/.tinypng.cache.json. To change this directory, use the -c, --cache flag:

tinypng . -r --cache /path/to/myCache.json

If you want to forcibly recompress assets, use the --force flag. For a dry run output of all files that will be sent to the API, use the --dry-run flag.

That's it. Pretty easy, huh?

Changelog

  • 0.0.8
    • Implement cache map support and support for forcing compression
    • Implement dry-run support
    • Implement maximum runs support to enable batching
  • 0.0.7
    • Implement support for uppercase file extensions
  • 0.0.6
    • Prevent any file changes in case JSON parsing fails or any other HTTP error occurred
  • 0.0.5
    • Add support for image resize functionality
  • 0.0.4
    • Make recursive directory walking optional
  • 0.0.3
    • Updated API endpoint
    • Check for valid JSON response
  • 0.0.2
    • JP(E)G support
  • 0.0.1
    • Initial version

TODO

  • Documentation
  • Tests

License

Copyright (c) 2017 websperts
Licensed under the MIT license.

See LICENSE for more info.

Contributors

tinypng-cli's People

Contributors

baublet avatar inklammern avatar jblok avatar maxkueng avatar rasshofer avatar tholu avatar tomatolicious avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tinypng-cli's Issues

api key

Just wondering what format the api key needs to be in when placing in a dotfile called .tinypng

Sorry just looked at code and api key just needs pasting into dotfile, was thinking it needed to be key='...'

Not a valid JSON response

Installed tinpng-cli, all dependencies, and my API key in .tinypng and I continue to receive the following result:

C:\Users\xxxxxxxx\Downloads>tinypng thing.png
TinyPNG CLI
v0.0.7

✔ Found 1 image

Processing...
✘ Not a valid JSON response for thing.png

Even with API in argument:
C:\Users\xxxxxxx\Downloads>tinypng thing.png -k F7xlkyqNb09kjRwB38R9rpk92gv02plv
TinyPNG CLI
v0.0.7

✔ Found 1 image

Processing...
✘ Not a valid JSON response for thing.png

I have reviewed issue #12, but did not see any indication of any further support on that thread.

Wildcards for targeting files.

As a feature request would be great if could do wildcard searches for processing some images.

For example, to resize and minimise images with -1200 at end of filename:
tinypng img/*/*-1200.* --width 1200

Global config

It would be great if we have a global config file to put api-key instead of pasting it in every command.

Can't find filename with spaces on Windows

If I try to pass a filename that has a space in it, the script can't find the file No PNG or JPEG images found. This shouldn't happen if I'm putting my filename in quotes, but I'm still getting that error. Even using escape characters like filename\ with\ spaces.jpg doesn't work either.

This is what I've tried

tinypng "filename with spaces.jpg"
tinypng 'filename with spaces.jpg'
tinypng filename\ with\ spaces.jpg

Every time I get the same No PNG or JPEG images found., I was able to fix this by renaming the file to not have spaces. But, it would be nice if I didn't have to do that step.

Specs

Terminal: Git Bash for Windows (mintty 3.1.0 x86_64-pc-msys)

OS: Windows 10

TinyPNG CLI version: v0.0.7

Delay for file processing with -r flag

When I'm trying run process with -r flag and 1000 images I get "Connection error"
I think this is due to restrictions on the side of tinypng.
Maybe delay can help

Not working

With any command line arguments, gives error:
✘ Not a valid JSON response for ./b_b.png

issue with empty response

I just ran over 498 files - around half of them returned a JSON parse error and wrote 0 byte files... within 3 seconds of execution (1gbit/400mbit line here, it goes fast) - I now have to reset the repository of those images ;)

Publish 0.0.8

Any plans on publishing the version 0.0.8 to npm?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.