0

폴더의 모든 이미지를 해당 크기의 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 4백66킬로바이트

enter image description here

출력 이미지 796x1017 1.44 MB!

enter image description here

을 회전하고 explanation about it here on Stackoverflow있어 동안은 PNG 파일로 다소 유사한 않은 직관적 인 경험을 앞서 있었다. 그러나 나는 이것이 아마 같은 문제라는 것을 스스로 확신 할 수 없다.

실마리가 있습니까? PNG 크기를 줄이기 위해 할 수있는 다른 방법이 있습니까? 필요한 경우 약간의 품질 손실이 있음을 확인하십시오.

+1

당신은 이러한 이미지를 축소하는거야 등 작은 픽셀 크기? 아니면 파일의 바이트 크기를 줄이려고 시도하고 있습니까? –

+3

앤티 앨리어싱을 사용하여 크기를 조절하면 원본에없는 중간 색상이 _lot_ 생성되어 이미지의 압축률이 변경 될 수 있습니다. PNG에는 많은 압축 옵션이 있지만 압축을 "조정"할 수있는 매개 변수에 대한 액세스를 제공하는 프로그램은 거의없고 최상의 매개 변수를 선택하는 것은 복잡한 작업입니다. PNG 재 압축 프로그램이 몇 개 있습니다. 나는 [OptiPNG] (http://optipng.sourceforge.net)를 사용하고 추천합니다. –

+0

@ PM2Ring 작은 파일 크기를 원합니다. 그리고 네, 사후 처리의 일부로 OptiPNG를 사용하고 있지만, 원하는만큼 크기를 줄이지 못했습니다. 그래서 크기를 줄이고 파일 크기가 줄어들 것으로 예상했습니다. –

답변

1

고품질 다운 샘플링 필터 인 Image.ANTIALIAS 필터를 사용했습니다.

이미지의 크기를 줄이려면 이미지를 저장하는 동안 optimize=Truequality=90을 사용할 수 있습니다. 마찬가지로 -

imResize.save(path + "/Out/" + fileName + ' resized_' + str(scalingFactor) + ".png" ,optimize=True,quality=90) 

최적화 플래그는 가능한 한 크기를 줄이는 방법을 찾기 위해 이미지에 추가 통과를합니다.

이제 크기를 줄이려면 저장 옵션에서 품질 값을 변경할 수 있습니다.

품질에 큰 영향을 미치지 않으며 파일 크기가 훨씬 작기 때문에 나는 품질 85와 optimize을 선호합니다.

희망이 도움이됩니다.


그냥 실행 속도 대 품질에 대한 결정을 내릴, 모든 필터는 다음과 같습니다 당신의 대답에 추가 할 당신이를 원하기 때문에

http://pillow.readthedocs.io/en/3.4.x/handbook/concepts.html#concept-filters

+0

감사합니다. @amit. 큰 도움 !! – Tanu