Merge branch 'master' of git@host.fluxility.com:optimg

Conflicts:
	trimage.py
This commit is contained in:
Kilian Valkhof 2010-02-05 22:24:03 +01:00
commit 18ce2061fc

View file

@ -1,7 +1,7 @@
import sys import sys
from os import system from os import system
from os import listdir from os import listdir
from os import path import os.path
from subprocess import * from subprocess import *
from optparse import OptionParser from optparse import OptionParser
@ -84,11 +84,11 @@ class StartQT4(QMainWindow):
compress_file.""" compress_file."""
global showapp global showapp
showapp = False showapp = False
dirpath = path.abspath(path.dirname(directory)) dirpath = os.path.abspath(os.path.dirname(directory))
imagedir = listdir(directory) imagedir = listdir(directory)
filelist = QStringList() filelist = QStringList()
for image in imagedir: for image in imagedir:
image = QString(path.join(dirpath, image)) image = QString(os.path.join(dirpath, image))
filelist.append(image) filelist.append(image)
self.delegator(filelist) self.delegator(filelist)
@ -96,7 +96,7 @@ class StartQT4(QMainWindow):
"""Get the file and send it to compress_file""" """Get the file and send it to compress_file"""
global showapp global showapp
showapp = False showapp = False
image = path.abspath(image) image = os.path.abspath(image)
filecmdlist = QStringList() filecmdlist = QStringList()
filecmdlist.append(image) filecmdlist.append(image)
self.delegator(filecmdlist) self.delegator(filecmdlist)
@ -181,7 +181,7 @@ class StartQT4(QMainWindow):
def checkname(self, name): def checkname(self, name):
"""Check if the file is a jpg or png.""" """Check if the file is a jpg or png."""
return path.splitext(str(name))[1].lower() in [".jpg", ".jpeg", ".png"] return os.path.splitext(str(name))[1].lower() in [".jpg", ".jpeg", ".png"]
def enable_recompress(self): def enable_recompress(self):
"""Enable the recompress button.""" """Enable the recompress button."""
@ -231,7 +231,6 @@ class TriTableModel(QAbstractTableModel):
class Worker(QThread): class Worker(QThread):
def __init__(self, parent=None): def __init__(self, parent=None):
QThread.__init__(self, parent) QThread.__init__(self, parent)
self.exiting = False self.exiting = False
@ -250,56 +249,59 @@ class Worker(QThread):
for image in self.images: for image in self.images:
#gather old file data #gather old file data
filename = image[0] filename = image[0]
print filename, type(filename), str(filename), type(path)
icon = image[1] icon = image[1]
oldfile = QFileInfo(filename) oldfile = QFileInfo(filename)
name = oldfile.fileName() name = oldfile.fileName()
oldfilesize = oldfile.size() oldfilesize = oldfile.size()
oldfilesizestr = size(oldfilesize, system=alternative) oldfilesizestr = size(oldfilesize, system=alternative)
# get extention
print os.path, type(filename), type(os.path), str(filename)
baseName, extention = os.path.splitext(filename)
#decide with tool to use #decide with tool to use
if path.splitext(str(filename))[1].lower() in [".jpg", ".jpeg"]: if extention in ['.jpg', '.jpeg']:
runstr = 'jpegoptim -f --strip-all "' + str(filename) + '"' runString = 'jpegoptim -f --strip-all "%(file)s"'
try: elif extention in ['.png']:
retcode = call(runstr, shell=True, stdout=PIPE) runString = 'optipng -force -o7 "%(file)s"; advpng -z4 "%(file)s"'
runfile = retcode
except OSError, e:
runfile = e
elif path.splitext(str(filename))[1].lower() in [".png"]:
runstr = ('optipng -force -o7 "' + str(filename)
+ '"; advpng -z4 "' + str(filename) + '"')
try:
retcode = call(runstr, shell=True, stdout=PIPE)
runfile = retcode
except OSError, e:
runfile = e
if runfile == 0:
#gather new file data
newfile = QFile(filename)
newfilesize = newfile.size()
newfilesizestr = size(newfilesize, system=alternative)
#calculate ratio and make a nice string
ratio = 100 - (float(newfilesize) / float(oldfilesize) * 100)
ratiostr = "%.1f%%" % ratio
# append current image to list
for i, image in enumerate(imagelist):
if image[4] == filename:
imagelist.remove(image)
imagelist.insert(i, (name, oldfilesizestr,
newfilesizestr, ratiostr, filename, icon))
self.emit(SIGNAL("updateUi"))
global showapp
if showapp != True:
# we work via the commandline
print("File:" + filename + ", Old Size:" + oldfilesizestr +
", New Size:" + newfilesizestr +
", Ratio:" + ratiostr)
else: else:
print("[error]" + runfile) # This probably should never happen...
raise Exception('File %s does not have the appropriate extention' % filename)
try:
retcode = call(runString % {'file' : filename}, shell=True, stdout=PIPE)
runfile = retcode
except OSError, e:
runfile = e
if runfile != 0:
# TODO nice error recovery
raise Exception('Some error occurred!')
#gather new file data
newfile = QFile(filename)
newfilesize = newfile.size()
newfilesizestr = size(newfilesize, system=alternative)
#calculate ratio and make a nice string
ratio = 100 - (float(newfilesize) / float(oldfilesize) * 100)
ratiostr = "%.1f%%" % ratio
# append current image to list
global imagelist
for i, image in enumerate(imagelist):
if image[4] == filename:
imagelist.remove(image)
imagelist.insert(i, (name, oldfilesizestr, newfilesizestr, ratiostr,
filename, icon))
self.emit(SIGNAL("updateUi"))
global showapp
if not showapp:
# we work via the commandline
print("File:" + filename + ", Old Size:" + oldfilesizestr +
", New Size:" + newfilesizestr + ", Ratio:" + ratiostr)
if __name__ == "__main__": if __name__ == "__main__":
app = QApplication(sys.argv) app = QApplication(sys.argv)