Это больше года, но если кто-то еще ищет:
Вот пример кода, который покажет, находится ли изображение в режиме палитры, и внесет коррективы
import Image # or from PIL import Image
img = Image.open(sourceFile)
if 'P' in img.mode: # check if image is a palette type
img = img.convert("RGB") # convert it to RGB
img = img.resize((w,h),Image.ANTIALIAS) # resize it
img = img.convert("P",dither=Image.NONE, palette=Image.ADAPTIVE)
#convert back to palette
else:
img = img.resize((w,h),Image.ANTIALIAS) # regular resize
img.save(newSourceFile) # save the image to the new source
#img.save(newSourceFile, quality = 95, dpi=(72,72), optimize = True)
# set quality, dpi , and shrink size
Преобразовав версию с палитрой в RGB, мы можем изменить ее размер с помощью псевдонима.Если вы хотите восстановить его обратно, то вам нужно установить дизеринг на NONE и использовать палитру ADAPTIVE.Если параметры не включены, ваш результат (если он преобразован в палитру) будет зернистым.Также вы можете использовать параметр качества в функции сохранения для некоторых форматов изображений, чтобы еще больше улучшить качество.