Skip to main content

MIT License CI PyPI PyPI - Python Version PyPI - Wheel

Tinify API client for Python

Tinify is the official Python client for the TinyPNG and TinyJPG image compression API, enabling developers to intelligently compress, resize, convert and optimize PNG, APNG, JPEG, WebP and AVIF images programmatically. Read more at https://tinify.com.

Go to the full documentation for the Python client.

Features

  • Compress and optimize images, reducing file size by 50-80% while preserving visual quality
  • Resize and crop images with smart compression
  • Convert between PNG, JPEG, WebP and AVIF formats
  • Preserve metadata (optional)
  • Upload to storage providers like Amazon S3, Google cloud storage.
  • Apply visual transformations with the Tinify API
  • Comprehensive error handling

Requirements

  • Python 2.7+
  • Requests library

Installation

Install the API client with pip:

pip install tinify

Quick start

import tinify

# Set your API key (get one for free at https://tinypng.com/developers)
tinify.key = "YOUR_API_KEY"

# Compress an image from a file
tinify.from_file("unoptimized.png").to_file("optimized.png")

# Compress from URL
tinify.from_url("https://example.com/image.jpg").to_file("optimized.jpg")

# Compress from buffer
source_data = b"<image data>"
tinify.from_buffer(source_data).to_file("optimized.jpg")

Advanced Usage

Resizing

# Scale image to fit within 300x200px while preserving aspect ratio
tinify.from_file("original.jpg").resize(
    method="scale",
    width=300,
    height=200
).to_file("resized.jpg")

# Fit image to exact 300x200px dimensions
tinify.from_file("original.jpg").resize(
    method="fit",
    width=300,
    height=200
).to_file("resized.jpg")

# Cover 300x200px area while preserving aspect ratio
tinify.from_file("original.jpg").resize(
    method="cover",
    width=300,
    height=200
).to_file("resized.jpg")

Format Conversion

# Convert to WebP format
tinify.from_file("image.png").convert(
    type=["image/webp"]
).to_file("image.webp")
# Convert to smallest format
converted = tinify.from_file("image.png").convert(
    type=["image/webp", "image/avif", "image/jxl"]
)
extension = converted.result().extension
converted.to_file("image." + extension)

Compression Count Monitoring

# Check the number of compressions made this month
compression_count = tinify.compression_count
print(f"You have made {compression_count} compressions this month")

Error Handling

import tinify

tinify.key = "YOUR_API_KEY"

try:
    tinify.from_file("unoptimized.png").to_file("optimized.png")
except tinify.AccountError as e:
    # Verify or update API key
    print(f"Account error: {e.message}")
except tinify.ClientError as e:
    # Handle client errors (e.g., invalid image)
    print(f"Client error: {e.message}")
except tinify.ServerError as e:
    # Handle server errors
    print(f"Server error: {e.message}")
except tinify.ConnectionError as e:
    # Handle network connectivity issues
    print(f"Connection error: {e.message}")
except Exception as e:
    # Handle general errors
    print(f"Error: {str(e)}")

Running tests

pip install -r requirements.txt -r test-requirements.txt
py.test

To test more runtimes, tox can be used

tox

Integration tests

pip install -r requirements.txt -r test-requirements.txt
TINIFY_KEY=$YOUR_API_KEY py.test test/integration.py

License

This software is licensed under the MIT License. See LICENSE for details.

Support

For issues and feature requests, please use our GitHub Issues page or contact us at support@tinify.com

Release files for tinify 1.7.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tinify 1.7.2
File Size Uploaded
tinify-1.7.2.tar.gz 124.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for tinify 1.7.2
File Interpreter ABI Platform
tinify-1.7.2-py2.py3-none-any.whl Python 3, Python 2 none any Details

Total release size: 248.0 kB

Release files / tinify-1.7.2.tar.gz

Download URL tinify-1.7.2.tar.gz
Size 124.5 kB
Tags Source
SHA-256 checksum
How to use checksums
fc370781dc81eaabe32d95192d8afda89ee4801763dbc4c3002181a21fc30e27
BLAKE2b-256 checksum
How to use checksums
7c34a214725d59eba0d03eb7f2fcdafabb47978f7aa461a1c8497a97cdb75f1e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Release files / tinify-1.7.2-py2.py3-none-any.whl

Download URL tinify-1.7.2-py2.py3-none-any.whl
Size 123.5 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
aa370bad178713c4cde2cdca14fb14d603e6967776e25369b9ab4c25e552bc19
BLAKE2b-256 checksum
How to use checksums
41ec3ec6285ec910329d44109b4f2a82167ebcf16dbceb6ec005055c07e5867d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Release history Release notifications | RSS feed

This release

1.7.2 This release

2 release files

1.7.1

2 release files

1.7.0

2 release files

1.6.0

2 release files

1.5.2

1 release file

1.5.1

1 release file

1.5.0

1 release file

1.4.0

1 release file

1.3.0

1 release file

1.2.0

1 release file

1.1.0

1 release file

0.9.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page