用python对图片进行压缩
时间: 2024-01-12 15:04:51 浏览: 86
可以使用Pillow库中的Image模块对图片进行压缩。首先,导入以下代码行:
```python
from PIL import Image
import os
```
然后,使用以下代码行加载原始图像:
```python
image = Image.open("original_image.jpg")
```
下一步是将图像压缩到你需要的尺寸。以下代码行可以将图像缩小到50%:
```python
width, height = image.size
image = image.resize((int(width * 0.5), int(height * 0.5)))
```
最后,使用以下代码行保存压缩后的图像:
```python
image.save("compressed_image.jpg", optimize=True, quality=85)
```
其中,优化的参数可以减小文件大小,质量参数可以控制图像压缩后的图像质量,取值范围是0到100之间,值越高质量越好,但文件大小也就越大。
相关问题
Python 对图片进行压缩
Python可以使用Pillow库对图片进行压缩。具体操作可以使用Pillow库中的Image.resize()函数对图片进行尺寸调整,以及Image.save()函数对图片进行压缩质量调整。例如:
```
from PIL import Image
# 打开图片文件
img = Image.open("example.jpg")
# 调整图片尺寸为原来的一半
new_size = tuple([int(i/2) for i in img.size])
resized_img = img.resize(new_size)
# 压缩图片质量为原来的70%
resized_img.save("compressed.jpg", quality=70)
```
这样就可以将原图缩小一倍并压缩质量为70%后存储到指定路径。
用python对图片进行SVD压缩
可以使用Python中的numpy库对图片进行SVD压缩,具体实现可以参考以下代码:
```python
import numpy as np
from PIL import Image
# 读取图片并转换成灰度图
img = Image.open('example.jpg').convert('L')
# 转换成numpy数组
img_array = np.array(img)
# 对图片矩阵进行SVD分解
U, S, VT = np.linalg.svd(img_array)
# 设置要保留的奇异值个数,即压缩后的图片大小
k = 100
# 对S矩阵进行截断,只保留前k个奇异值
S = np.diag(S[:k])
# 计算压缩后的图片矩阵
compressed_img = U[:, :k] @ S @ VT[:k, :]
# 转换为PIL图片并保存
final_img = Image.fromarray(compressed_img.astype(np.uint8))
final_img.save('compressed.png')
```
这段代码通过对图片矩阵进行SVD分解,对S矩阵进行截断,保留前k个奇异值,来实现图片压缩。
阅读全文