怎么用python进行图片压缩
时间: 2023-08-11 13:31:08 浏览: 44
在Python中,可以使用Pillow(Python Imaging Library)库来进行图片压缩。下面是一个简单的示例代码:
```python
from PIL import Image
# 打开原始图片
img = Image.open("original_image.jpg")
# 设置压缩质量为30%
img.save("compressed_image.jpg", optimize=True, quality=30)
```
在上面的代码中,我们首先使用`Image.open()`方法打开原始图片,然后使用`save()`方法将压缩后的图片保存到指定的文件中。其中,`quality`参数用于设置压缩质量,取值范围为0到100,其中0表示最差的质量,100表示最好的质量。
需要注意的是,压缩质量越低,图片的失真程度越高。因此,在实际使用中需要根据具体情况进行调整。
相关问题
用python对图片进行压缩
可以使用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对图片进行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个奇异值,来实现图片压缩。