PooH
Dr.Livsi
Код не весь, но в том то и странность, что Image не переопределялся.
Если не жалко, покажите целиком, хотя бы электропочтой, интересно, чудес то не бывает
не жалко, постараюсь сбросить в ближайшее время.
Вот:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os, distutils.filelist
# from PIL import Image
# import Image
from Tkinter import *
import tkMessageBox
class ResaveJPG(Frame):
def __init__(self, master=None):
Frame.__init__(self, master)
self.pack({'padx':5, 'pady':5})
self.createWidgets()
def createWidgets(self):
self.ent=Entry(self, width=50)
self.ent.insert(0,u'Путь к папке')
self.btn=Button(self, width=10, text=u'Пуск')
self.btn.bind('<Button-1>', lambda _:resave_all(self.ent.get()))
self.ent.grid(row=0, column=0, padx=5, pady=5, sticky=N)
self.btn.grid(row=0, column=1, padx=5, pady=5, sticky=N)
def myfltr(path2file):
if path2file.count('_720')==0 and path2file.count('_160')==0 and path2file.lower().count('.jpg')!=0:
return True
def resave_pict(path2file):
'''Пересохраняет конкретный файл в среднем качестве'''
from PIL import Image
print u'Пересохраняем файл', path2file
im=open(path2file, 'rb')
myimg=Image.open(im)
if myimg.mode not in ('L', 'RGB'):
myimg = myimg.convert('RGB')
sizes=myimg.size
if max(sizes)>1200:
maxsize=1200
else:
maxsize=max(sizes)
try:
myimg.thumbnail((maxsize,maxsize), Image.NEAREST)
myimg.save(path2file)
except IOError:
print u'Файл', path2file, u'не пересохранен'
im.close()
def resave_all(path):
'''Ищет jpeg файлы в папке path рекурсивно. Убирает 720 и 160. Оригиналы пересохраняет в среднем качестве'''
a=distutils.filelist.findall(path)
b=filter(myfltr, a)
map(resave_pict,b)
print u'Файлы пересохранены'
def run_resave(master=Tk()):
app=ResaveJPG(master)
app.master.title(u'Уменьшаем размер фотографий!')
app.mainloop()
if __name__=='__main__': run_resave()