Я пытаюсь масштабировать все изображения в папке до 90% от их соответствующих размеров. Написал это:Уменьшение изображений PNG увеличивает размер изображения
from PIL import Image
import sys, csv, os, traceback
path = "C:\Users\Dell\Desktop\Textures\\"
dirs = os.listdir(path)
scalingFactor = .9
def resize():
for item in dirs:
print 'item', path+item
if os.path.isfile(path+item):
im = Image.open(path+item)
f, e = os.path.splitext(path+item)
imResize = im.resize((int(im.size[0]*scalingFactor),int(im.size[1]*scalingFactor)), Image.ANTIALIAS)
fileName = f.split('\\')[-1]
imResize.save(path + "/Out/" + fileName + ' resized_' + str(scalingFactor) + ".png" , 'PNG')
Однако, когда я запускаю его, размер изображения фактически увеличивается вместо уменьшения (как я ожидал).
например. Исходное изображение 885x1130 466KB
Вывод изображения 796x1017 1,44 MB!
Я был довольно похож не-интуитивный опыт ранее с PNG-, вращая их и получил explanation about it here on Stackoverflow. Но я не могу убедить себя, что это, пожалуй, одна и та же проблема.
Любые подсказки? и что-то еще, что я могу сделать, чтобы уменьшить размер PNG? В порядке с небольшой потерей качества, если это необходимо.
Вы масштабирование этих изображений вниз, потому что вы хотите меньший размер пикселя? Или вы делаете это, пытаясь уменьшить размер байтов файлов? –
Обратите внимание, что масштабирование с помощью сглаживания может создавать _lot_ промежуточных цветов, которых нет в оригинале, и которые могут изменять сжимаемость изображения. PNG имеет множество параметров сжатия, но несколько программ дают вам доступ к параметрам, которые позволяют вам «настраивать» сжатие, а выбор лучших параметров - сложная задача. Существует несколько программ повторного сжатия PNG; Я использую и рекомендую [OptiPNG] (http://optipng.sourceforge.net). –
@ PM2Ring Я хочу меньший размер файла. И да, я использую OptiPNG в качестве части пост-обработки, но это не уменьшало размер до нужной мне точки. Поэтому я подумал о его масштабировании и ожидал сокращения размера файла. –