写一个在jupyter notebooks上测量彩色图像压缩前后压缩率的代码
时间: 2024-02-17 09:00:38 浏览: 209
图像压缩的源代码
5星 · 资源好评率100%
好的,以下是一个在 Jupyter Notebook 上测量彩色图像压缩前后压缩率的代码示例。这个代码使用了 Python 的 Pillow 库进行图像的读取和压缩,以及 NumPy 库进行数组计算。
```python
from PIL import Image
import numpy as np
import io
# 读取原始图像
img = Image.open('test.jpg')
# 将图像转换为 NumPy 数组
img_arr = np.array(img)
# 计算原始图像大小
original_size = img_arr.nbytes
# 压缩图像
# 这里使用 JPEG 压缩,压缩质量为 70%
compressed_img = io.BytesIO()
img.save(compressed_img, format='JPEG', quality=70)
# 计算压缩后图像大小
compressed_size = compressed_img.tell()
# 读取压缩后图像
compressed_img.seek(0)
compressed_img_data = compressed_img.read()
compressed_img = Image.open(io.BytesIO(compressed_img_data))
# 将压缩后图像转换为 NumPy 数组
compressed_img_arr = np.array(compressed_img)
# 计算压缩率
compression_ratio = compressed_size / original_size
# 输出压缩前后的大小和压缩率
print(f"Original size: {original_size:,}")
print(f"Compressed size: {compressed_size:,}")
print(f"Compression ratio: {compression_ratio:.2f}")
```
在这个示例中,我们首先使用 Pillow 库读取了一张名为 `test.jpg` 的彩色图像,并将其转换为 NumPy 数组。然后,我们计算了原始图像的大小,并使用 JPEG 压缩算法对图像进行了压缩。接着,我们计算了压缩后图像的大小,并将其读取为 Pillow 对象。我们将压缩后的图像再次转换为 NumPy 数组,并计算了压缩率。最后,我们输出了压缩前后的大小和压缩率的结果。
请注意,这个示例中压缩质量设置为 70%,这个值可以根据需要进行调整。另外,如果要测量多张图像的压缩前后压缩率,可以将这个代码放入循环中,对每张图像进行压缩和压缩率计算。
阅读全文