Для изменения размера изображений я всегда использовал .thumbnail
.Это простой в использовании, и это просто работает.Чтобы сохранить данные цветов и альфа, решение, предоставленное Vasu Deo.S , работает хорошо, и это то, что я использую в своем сценарии.
Вам необходимо сохранить ваши изображенияв .png
вместо .jpeg
, чтобы избежать ошибки альфа-канала.
Итак, вот ваш отредактированный код, который действительно работает.
path = "data/images/"
dirs = os.listdir( path )
def resizeImages():
for item in dirs:
if os.path.isfile(path+item):
im = Image.open(path+item)
im = im.convert('RGBA')
size = 200, 200
imResize.thumbnail(size)
f, e = os.path.splitext(path+item)
imResize.save(f+'.png')
Обратите внимание, что это нужно будетсохранено как .png
.Если вы хотите сохранить как .jpeg
изображение, вы должны избавиться от альфа-канала, используя это:
path = "data/images/"
dirs = os.listdir( path )
def resizeImages():
for item in dirs:
if os.path.isfile(path+item):
im = Image.open(path+item)
im = im.convert('RGBA')
data = np.array(im)
red, green, blue, alpha = data.T
alpha_areas = (red == 0) & (blue == 0) & (green == 0) & (alpha == 0) # set alpha to 0
data[..., :-1][alpha_areas.T] = (255,255,255)
im = Image.fromarray(data)
size = 200, 200
imResize = im.thumbnail(size)
f, e = os.path.splitext(path+item)
imResize.save(f+'.png')