生成1MB图像python

时间:2015-07-13 20:43:12

标签: python django

我需要生成1MB的图像文件才能在django上做一个测试。我只能设置图像大小,而不能设置图像文件大小。

image_file = StringIO()
image = Image.new('RGBA', size=(4000,4000), color=(256,0,0))
image.save(image_file, 'png')

2 个答案:

答案 0 :(得分:1)

最简单的方法是保存没有压缩的BMP图像:

In [1]: Image.new('L', (1024, 1024)).save('/tmp/x.bmp')
In [2]: !ls -alh /tmp/x.bmp
-rw-r--r--  1 wolever  wheel   1.0M Jul 13 16:46 /tmp/x.bmp

如果你需要使用PNG,你可以用随机数据填充它:

In [3]: import os
In [4]: Image.frombytes('L', (1024, 1024), os.urandom(1024*1024)).save('/tmp/x.png')
In [5]: !ls -alh /tmp/x.png
-rw-r--r--  1 wolever  wheel   1.0M Jul 13 16:49 /tmp/x.png

答案 1 :(得分:-1)

文件大小取决于图片上的 。 PNG会压缩数据,因此空白图像会比照片小(具有相同的分辨率)。

您可以使用迭代方法:填充一个像素,保存到文件,检查大小。然后翻转另一个。更快:使用二分法。