我编写的这个程序只拍摄一张图像并将其裁剪成7张不同大小的PNG图像。
import Image
img = Image.open("0.png")
ax1 = 0
ax2 = 0
ay1 = 0
ay2 = 0
incr = 0
last = 0
sizes = [256,128,64,48,32,24,16]
def cropicon (newsize):
global ax1, ax2, ay2, imgc, last, incr
incr += 1
ax1 = ax1 + last
ax2 = ax1 + newsize
ay2 = newsize
imgc = img.crop((ax1, ay1, ax2, ay2))
imgc.save("%d.png" % incr)
last = newsize
for size in sizes:
cropicon(size)
Example of an input image I'm using.
我目前正在使用其他程序获取各个PNG并将它们合并为一个ICO文件。
我想要的是Python输出一个指定了所有尺寸的ICO文件而不是多个PNG的输出。
答案 0 :(得分:0)
当您的输入图像重复相同的图标时:
然后只需裁剪第一个使用sizes
参数创建图标:
from PIL import Image
size_tuples = [(256, 256),
(128, 128),
(64, 64),
(48, 48),
(32, 32),
(24, 24),
(16, 16)]
img = Image.open("0.png")
imgc = img.crop((0, 0, 256, 256))
imgc.save('out.ico', sizes=size_tuples)
请参阅docs:
尺寸强>
此ico文件中包含的尺寸列表;这些是2元组,
(width, height)
;默认为[(16, 16), (24, 24), (32, 32), (48, 48), (64, 64), (128, 128), (255, 255)]
。任何大于原始尺寸或255的尺寸都将被忽略。
实际上那些文档中有一个拼写错误(我会修复); default includes (256, 256),而不是(255,255)。因此,默认值符合您的要求,您可以使用imgc.save('out.ico')
保存:
from PIL import Image
img = Image.open("0.png")
imgc = img.crop((0, 0, 256, 256))
imgc.save('out.ico')