Skip to main content

Image Compression

It is an image compression Python package based on Singular Value Decomposition (SVD) technology. This tool offers an efficient block-based image compression method, reducing the storage requirements of images by dividing them into blocks and applying SVD, while retaining as much visual information as possible.

Update Description

1. Extended Input Support

Improvement: In the new version, the compress_image_with_svd function now directly accepts PIL Image objects as input, rather than being limited to file paths. This enhancement simplifies the image processing workflow, avoiding additional image loading steps and making it more suitable for scenarios where images need to be processed multiple times.

2. Region Merging and Color Quantization

New Features: Added the region_growing and quantize_image functions. The region_growing function reduces the complexity of the image by identifying and merging regions with similar colors, thereby achieving more efficient compression. The quantize_image function uses color quantization techniques to reduce the number of colors in the image to a specified number, further optimizing the compression ratio.

Optimization Effect: By combining region merging and color quantization, the efficiency of image compression can be significantly improved while maintaining high visual quality. This is particularly suitable for images with large areas of the same or similar colors.

Installation

pip install .

Usage

#%% package
from svdcompressionimage import compress_image_with_svd, quantize_image, region_growing
import os
from PIL import Image, ImageFilter

#%% path
image_path = 'YOUR_IMAGE_PATH.jpg'
image = Image.open(image_path)

#%% mkdir --> exist?
output_dir = 'THE_FOLDER_YOU_WANT_TO_PLACE'
os.makedirs(output_dir, exist_ok = True)

#%% region --> color
merged_image = region_growing(image, tolerance = 10)
quantized_image = quantize_image(merged_image, n_colors)

#%% block & rank
block_size = # YOU CAN USE 16, 32, 64, 128...
rank = # YOU CAN SET `RANK = NONE` TO AUTOMATICALLY SELECT THE NUMBER OF SINGULAR VALUES. YOU CAN ALSO SET IT MANUALLY; THE SMALLER THE VALUE OF `RANK`, THE STRONGER THE COMPRESSION BUT LESS INFORMATION IS RETAINED. THE LARGER THE VALUE, THE WEAKER THE COMPRESSION BUT MORE INFORMATION IS PRESERVED.

#%% compression & sharp
compressed_image = compress_image_with_svd(quantized_image, 
                                           block_size = block_size, 
                                           rank = rank)
compressed_image = compressed_image.filter(ImageFilter.SHARPEN)

#%% save
compressed_image.save(os.path.join(output_dir, 'THE_IMAGE_NAME_YOU_WANT_TO_ACCESS.jpg')) # SUPPORTS INPUT AND OUTPUT IN MULTIPLE IMAGE FORMATS, SUCH AS JPEG, PNG, BMP, SUITABLE FOR DIFFERENT APPLICATION SCENARIOS.

Release files for svdcompressionimage 0.1.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 svdcompressionimage 0.1.2
File Size Uploaded
svdcompressionimage-0.1.2.tar.gz 5.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for svdcompressionimage 0.1.2
File Interpreter ABI Platform
svdcompressionimage-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 11.8 kB

Release files / svdcompressionimage-0.1.2.tar.gz

Download URL svdcompressionimage-0.1.2.tar.gz
Size 5.7 kB
Tags Source
SHA-256 checksum
How to use checksums
bbd97a20435699fecfa2baa8616de7c3f19d56df90f7577bf0f4d66dc5d1cf1d
BLAKE2b-256 checksum
How to use checksums
114881fd550284927e685ac7501576ba656ac509c7258f96bc6d8fba87766d29
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.11.7

Release files / svdcompressionimage-0.1.2-py3-none-any.whl

Download URL svdcompressionimage-0.1.2-py3-none-any.whl
Size 6.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fa66fead478e310c1df303be80ea4deb68e9e3283d02e9133fefcadd5fc6a026
BLAKE2b-256 checksum
How to use checksums
95f3bbdd3ff14fe9a3d5dfbc1830653588b286aefcfda3f02e9d4b391c7128b4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.11.7

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 release files

0.1.0

2 release files

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