SID对给定图片进行压缩,并比较不同人值时压缩图片的清晰度。帮我用python编写一个解决上述问题的代码
时间: 2024-09-25 13:16:02 浏览: 32
Sure, SID (Simple Image Downsampler) 可以通过Python的PIL (Pillow) 库来进行图片压缩。不过,由于SID是一个假设的工具,我们可以创建一个简单的示例来演示如何压缩图片并对比压缩前后的清晰度。我们将使用PIL库来调整图片尺寸并量化清晰度差异。
首先,安装Pillow库(如果还没有安装):
```bash
pip install pillow
```
然后,我们可以编写如下的Python代码:
```python
from PIL import Image
import io
import numpy as np
def compress_image(image_path, compression_ratio):
# 读取原始图片
with Image.open(image_path) as img:
# 压缩图片大小
width, height = img.size
new_size = (int(width * compression_ratio), int(height * compression_ratio))
compressed_img = img.resize(new_size)
# 将图像转换为numpy数组,方便后续处理
original_data = np.array(img)
compressed_data = np.array(compressed_img)
return compressed_img, original_data, compressed_data
def compare_clarity(original, compressed):
# 计算PSNR( Peak Signal-to-Noise Ratio)
# PSNR越高,表示图像质量越好
mse = np.mean((original - compressed)**2)
max_pixel_value = 255.0
psnr = 10 * np.log10(max_pixel_value**2 / mse)
return psnr
# 使用压缩比,比如1/2或0.5
compression_ratio = 0.5
image_path = "your_image_path.jpg" # 替换为实际图片路径
compressed_img, original_data, compressed_data = compress_image(image_path, compression_ratio)
psnr = compare_clarity(original_data, compressed_data)
print(f"压缩后的图片清晰度评分(PSNR): {psnr} dB")
阅读全文