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
from svdcompressionimage import compress_image_with_svd, quantize_image, region_growing
import os
from PIL import Image, ImageFilter
image_path = 'YOUR_IMAGE_PATH.jpg'
image = Image.open(image_path)
output_dir = 'THE_FOLDER_YOU_WANT_TO_PLACE'
os.makedirs(output_dir, exist_ok = True)
merged_image = region_growing(image, tolerance = 10)
quantized_image = quantize_image(merged_image, n_colors)
block_size =
rank =
compressed_image = compress_image_with_svd(quantized_image,
block_size = block_size,
rank = rank)
compressed_image = compressed_image.filter(ImageFilter.SHARPEN)
compressed_image.save(os.path.join(output_dir, 'THE_IMAGE_NAME_YOU_WANT_TO_ACCESS.jpg'))