mirror of
https://github.com/Kilian/Trimage.git
synced 2026-01-26 10:08:40 -05:00
py2exe support
Usage: setup.py py2exe You must be able to start trimage.py before even attempting to use py2exe. It generates a standalone executable. That standalone exacutable starts up only if the following files can be found on the path: jpegoptim.exe optipng.exe advpng.exe (they must return 0) Compression does not work yet and the Windows versions of these tools are a lot slower than on Linux. The binaries I found were pretty old. They should most probably be recompiled to make use of new cpu features. Or we should find other tools. trimage.hurry.filename -> trimage.filename because py2exe couldn't deal with it
This commit is contained in:
parent
464337d033
commit
d282bcf8e9
5 changed files with 140 additions and 8 deletions
1
src/trimage/filesize/README.txt
Normal file
1
src/trimage/filesize/README.txt
Normal file
|
|
@ -0,0 +1 @@
|
|||
http://pypi.python.org/pypi/hurry.filesize
|
||||
2
src/trimage/filesize/__init__.py
Normal file
2
src/trimage/filesize/__init__.py
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
from filesize import size
|
||||
from filesize import traditional, alternative, verbose, iec, si
|
||||
110
src/trimage/filesize/filesize.py
Normal file
110
src/trimage/filesize/filesize.py
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
|
||||
traditional = [
|
||||
(1024 ** 5, 'P'),
|
||||
(1024 ** 4, 'T'),
|
||||
(1024 ** 3, 'G'),
|
||||
(1024 ** 2, 'M'),
|
||||
(1024 ** 1, 'K'),
|
||||
(1024 ** 0, 'B'),
|
||||
]
|
||||
|
||||
alternative = [
|
||||
(1024 ** 5, ' PB'),
|
||||
(1024 ** 4, ' TB'),
|
||||
(1024 ** 3, ' GB'),
|
||||
(1024 ** 2, ' MB'),
|
||||
(1024 ** 1, ' KB'),
|
||||
(1024 ** 0, (' byte', ' bytes')),
|
||||
]
|
||||
|
||||
verbose = [
|
||||
(1024 ** 5, (' petabyte', ' petabytes')),
|
||||
(1024 ** 4, (' terabyte', ' terabytes')),
|
||||
(1024 ** 3, (' gigabyte', ' gigabytes')),
|
||||
(1024 ** 2, (' megabyte', ' megabytes')),
|
||||
(1024 ** 1, (' kilobyte', ' kilobytes')),
|
||||
(1024 ** 0, (' byte', ' bytes')),
|
||||
]
|
||||
|
||||
iec = [
|
||||
(1024 ** 5, 'Pi'),
|
||||
(1024 ** 4, 'Ti'),
|
||||
(1024 ** 3, 'Gi'),
|
||||
(1024 ** 2, 'Mi'),
|
||||
(1024 ** 1, 'Ki'),
|
||||
(1024 ** 0, ''),
|
||||
]
|
||||
|
||||
si = [
|
||||
(1000 ** 5, 'P'),
|
||||
(1000 ** 4, 'T'),
|
||||
(1000 ** 3, 'G'),
|
||||
(1000 ** 2, 'M'),
|
||||
(1000 ** 1, 'K'),
|
||||
(1000 ** 0, 'B'),
|
||||
]
|
||||
|
||||
|
||||
|
||||
def size(bytes, system=traditional):
|
||||
"""Human-readable file size.
|
||||
|
||||
Using the traditional system, where a factor of 1024 is used::
|
||||
|
||||
>>> size(10)
|
||||
'10B'
|
||||
>>> size(100)
|
||||
'100B'
|
||||
>>> size(1000)
|
||||
'1000B'
|
||||
>>> size(2000)
|
||||
'1K'
|
||||
>>> size(10000)
|
||||
'9K'
|
||||
>>> size(20000)
|
||||
'19K'
|
||||
>>> size(100000)
|
||||
'97K'
|
||||
>>> size(200000)
|
||||
'195K'
|
||||
>>> size(1000000)
|
||||
'976K'
|
||||
>>> size(2000000)
|
||||
'1M'
|
||||
|
||||
Using the SI system, with a factor 1000::
|
||||
|
||||
>>> size(10, system=si)
|
||||
'10B'
|
||||
>>> size(100, system=si)
|
||||
'100B'
|
||||
>>> size(1000, system=si)
|
||||
'1K'
|
||||
>>> size(2000, system=si)
|
||||
'2K'
|
||||
>>> size(10000, system=si)
|
||||
'10K'
|
||||
>>> size(20000, system=si)
|
||||
'20K'
|
||||
>>> size(100000, system=si)
|
||||
'100K'
|
||||
>>> size(200000, system=si)
|
||||
'200K'
|
||||
>>> size(1000000, system=si)
|
||||
'1M'
|
||||
>>> size(2000000, system=si)
|
||||
'2M'
|
||||
|
||||
"""
|
||||
for factor, suffix in system:
|
||||
if bytes >= factor:
|
||||
break
|
||||
amount = int(bytes/factor)
|
||||
if isinstance(suffix, tuple):
|
||||
singular, multiple = suffix
|
||||
if amount == 1:
|
||||
suffix = singular
|
||||
else:
|
||||
suffix = multiple
|
||||
return str(amount) + suffix
|
||||
|
||||
14
src/trimage/trimage.py
Executable file → Normal file
14
src/trimage/trimage.py
Executable file → Normal file
|
|
@ -9,7 +9,7 @@ from optparse import OptionParser
|
|||
|
||||
from PyQt4.QtCore import *
|
||||
from PyQt4.QtGui import *
|
||||
from hurry.filesize import *
|
||||
from filesize import *
|
||||
from imghdr import what as determinetype
|
||||
|
||||
from Queue import Queue
|
||||
|
|
@ -209,18 +209,19 @@ class StartQT4(QMainWindow):
|
|||
|
||||
def checkapps(self):
|
||||
"""Check if the required command line apps exist."""
|
||||
exe=".exe" if (sys.platform=="win32") else ""
|
||||
status = False
|
||||
retcode = self.safe_call("jpegoptim --version")
|
||||
retcode = self.safe_call("jpegoptim"+exe+" --version")
|
||||
if retcode != 0:
|
||||
status = True
|
||||
sys.stderr.write("[error] please install jpegoptim")
|
||||
|
||||
retcode = self.safe_call("optipng -v")
|
||||
retcode = self.safe_call("optipng"+exe+" -v")
|
||||
if retcode != 0:
|
||||
status = True
|
||||
sys.stderr.write("[error] please install optipng")
|
||||
|
||||
retcode = self.safe_call("advpng --version")
|
||||
retcode = self.safe_call("advpng"+exe+" --version")
|
||||
if retcode != 0:
|
||||
status = True
|
||||
sys.stderr.write("[error] please install advancecomp")
|
||||
|
|
@ -343,9 +344,10 @@ class Image:
|
|||
raise "Tried to compress invalid image (unsupported format or not file)"
|
||||
self.reset()
|
||||
self.compressing=True
|
||||
exe=".exe" if (sys.platform=="win32") else ""
|
||||
runString = {
|
||||
"jpeg": u"jpegoptim -f --strip-all '%(file)s'",
|
||||
"png" : u"optipng -force -o7 '%(file)s'&&advpng -z4 '%(file)s'"}
|
||||
"jpeg": u"jpegoptim"+exe+" -f --strip-all '%(file)s'",
|
||||
"png" : u"optipng"+exe+" -force -o7 '%(file)s'&&advpng"+exe+" -z4 '%(file)s'"}
|
||||
try:
|
||||
retcode = call(runString[self.filetype] % {"file": self.fullpath},
|
||||
shell = True, stdout=PIPE)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue