2012-04-25 30 views
6

używam Pythona zapisać JPEG w mniejszym jakościPython PIL Jakość JPEG

im = Image.open(file) 
im.save(cached_file, quality=80, optimize=True, progressive=True) 

W niektórych obrazach Jednak rozmiar pliku nowego obrazu jest większa niż oryginału Jak to się stało? Dzięki

+0

Pomocne byłoby podanie przykładu w tym przypadku. –

Odpowiedz

7

Czy to możliwe, że oryginalny obraz został zapisany z jakością < 80? Więc, w zasadzie używasz więcej miejsca, aby oszczędzać artefakty związane z rekonstrukcją?

+0

Czy istnieje sposób określania jakości oryginalnego obrazu i kontynuowania procesu tylko wtedy, gdy jest on mniejszy? – Thomas

+1

Właśnie obejrzałem dokumentację PIL - http://www.pythonware.com/library/pil/handbook/format-jpeg.htm Wygląda na to, że domyślna jakość to 75, co sugerowałoby, że jeśli czytasz obraz, który został zapisany przez PIL bez określenia jakości, sytuacja, którą postawiłem, może się zdarzyć. Najwyraźniej podczas odczytu JPEG jakość nie jest znana. Podejrzewam, że jedynym sposobem, aby dowiedzieć się z wyprzedzeniem, jest dowiedzieć się więcej o kodowaniu JPEG. Być może byłbyś w porządku, porównując nowy zapisany plik z oryginałem, a następnie decydując, który z nich zachować? – user1245262

+0

Właściwie, zastanawiałem się nad tym, co sugerujesz i ewentualnie podążysz za nim, ale pomyślałem, że zapytam, czy istnieje bardziej optymalny sposób radzenia sobie z tym. Dzięki – Thomas

Powiązane problemy