蓝易云

Python 生成指定大小的图片

512次阅读
没有评论

共计 1292 个字符,预计需要花费 4 分钟才能阅读完成。

有时候想找一个指定占用磁盘大小的图片真的很难,所以也许用 python 生成是最合适的。但是过程中又要装 Pillow 这些库,并且还可能报错,所以想着还是做个 docker 镜像算了。

# 使用默认参数,生成大小为1M,长宽比为16/9的图片
docker run --rm -v $(pwd):/data hausen1012/img-generate

# 根据自己需要修改参数
docker run --rm \
-e SIZE=1 \
-e LENGTH=16 \
-e WIDTH=9 \
-v $(pwd):/data \
hausen1012/img-generate

还是贴一下代码:

import os
import random
import string
from PIL import Image
import numpy as np

# 从环境变量获取图片大小(以字节为单位)
file_size = int(os.environ.get('SIZE', 1)) * 1024 * 1024  # 默认大小为1MB

# 从环境变量获取长宽比
length = int(os.environ.get('LENGTH', 16))
width = int(os.environ.get('WIDTH', 9))

# 计算所需的图片宽度和高度
aspect_ratio = length / width
width_pixels = int(np.sqrt(file_size * aspect_ratio / 3))
height_pixels = int(width_pixels / aspect_ratio)

# 创建随机像素数组
data = np.random.randint(0, 256, (height_pixels, width_pixels, 3), dtype=np.uint8)

# 创建PIL图片对象
img = Image.fromarray(data, 'RGB')

# 设置保存目录
output_directory = "/data"

# 生成随机文件名
random_filename = ''.join(random.choices(string.ascii_letters + string.digits, k=10))
output_path = os.path.join(output_directory, f"{random_filename}.png")

# 检查并创建保存目录
os.makedirs(output_directory, exist_ok=True)

# 保存图片到 "/data" 目录下
img.save(output_path)

file_size_mb = file_size / (1024 * 1024)
print(f"图片名称: {random_filename}, 大小: {file_size_mb:.2f}MB, 长宽比: {length}/{width}")

dockerfile 如下:

FROM python:3.9-alpine

RUN pip3 install --upgrade pip && \
pip3 install --upgrade Pillow && \
pip3 install --upgrade numpy

COPY run.py /

CMD ["python3", "/run.py"]

提醒:本文发布于360天前,文中所关联的信息可能已发生改变,请知悉!

AD:【腾讯云服务器大降价】2核4G 222元/3年 1核2G 38元/年
正文完
 0
阿蛮君
版权声明:本站原创文章,由 阿蛮君 于2023-12-15发表,共计1292字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
Copyright © 2022-2024 阿蛮君博客 湘ICP备2023001393号
本网站由 亿信互联 提供云计算服务 | 蓝易云CDN 提供安全防护和加速服务
Powered by Wordpress  Theme by Puock