python如何生成较大的图片

问题:

想用python生成一个30MB的图能用什么办法?用pillow等库指定size好像生成不出来太大的图片

产生的原因

生成的图片文件过大,此无法直接生成

解决方法

使用如下方法,程序运行后控制台会提示红色报错信息,但图片可以成功生成

from PIL import Image
from PIL.ImagePath import Path

# 初始尺寸和颜色,这只是一个起点,你可能需要调整这些值
initial_size = (50000, 50000)  # 初始尺寸,你可能需要调整这个值
color = 'red'  # 图片颜色

# 创建一个新的图像
img = Image.new('RGB', initial_size, color=color)

# 保存图片,并调整quality参数来控制文件大小
# quality参数范围是1(最低质量,最小文件大小)到95(最高质量,最大文件大小)
quality = 50  # 初始质量设置,你可能需要调整这个值
output_filename = 'my_image.jpg'

# 尝试保存图片并检查文件大小
while True:
    img.save(output_filename, 'JPEG', quality=quality)
    file_size = Path(output_filename).stat().st_size / (1024 * 1024)  # 转换为MB

    if 25 < file_size < 35:  # 如果文件大小在25MB到35MB之间,就停止循环
        break
    elif file_size < 25:  # 如果文件太小,降低quality会导致文件更大,所以增加尺寸
        initial_size = (initial_size[0] * 1.1, initial_size[1] * 1.1)  # 增大10%
        img = Image.new('RGB', initial_size, color=color)
    else:  # 如果文件太大,增加quality
        quality += 5
        if quality > 95:  # 防止quality超过最大值
            break

print(f"Saved image '{output_filename}' with size approximately {file_size:.2f} MB")