diff options
author | Mattias Andrée <maandree@operamail.com> | 2015-11-19 04:23:24 +0100 |
---|---|---|
committer | Mattias Andrée <maandree@operamail.com> | 2015-11-19 04:23:24 +0100 |
commit | 8cae9fc6b9ebe348ed49c7967e5d33cd1ea89a31 (patch) | |
tree | dfbcf6f3b6b8c8b587f4ae66af943d181f4eec61 | |
parent | m (diff) | |
download | xpybar-1.12.tar.gz xpybar-1.12.tar.bz2 xpybar-1.12.tar.xz |
work around regression bug in ImageMagick and deficiency in GaphicsMagick1.12
Signed-off-by: Mattias Andrée <maandree@operamail.com>
-rw-r--r-- | DEPENDENCIES | 1 | ||||
-rw-r--r-- | src/plugins/image.py | 34 |
2 files changed, 13 insertions, 22 deletions
diff --git a/DEPENDENCIES b/DEPENDENCIES index fc4e88c..73474a8 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -18,6 +18,7 @@ OPTIONAL RUNTIME DEPENDENCIES: inotify-tools: for inotify support alarm: for limiting the time of a file search in locks findutils: for file search in locks + graphicsmagick: for image support imagemagick: for image support file: for image support librsvg: for image support diff --git a/src/plugins/image.py b/src/plugins/image.py index 5653ed7..97ad7c0 100644 --- a/src/plugins/image.py +++ b/src/plugins/image.py @@ -71,20 +71,25 @@ class Image: if not convert.wait() == 0: raise Exception('Image could not be converted') - convert = ['gm'] if Image.have_graphicsmagick() else [] - convert += ['convert', '-', '-background', background, '-alpha', 'remove', '-depth', '8'] - if width is not None: - convert += ['-resize', '%ix%i!' % (width, height)] - convert += ['ppm:-'] + convert = ['convert', '-', '-background', background, '-alpha', 'remove', '-depth', '8', 'ppm:-'] convert = Popen(convert, stdin = PIPE if raster is not None else open(file, 'rb'), stdout = PIPE, stderr = sys.stderr) if raster is not None: - self.data = list(convert.communicate(raster)[0]) + self.data = convert.communicate(raster)[0] else: - self.data = list(convert.communicate()[0]) + self.data = convert.communicate()[0] if not convert.wait() == 0: raise Exception('Image could not be converted') + if width is not None: + convert = ['gm', 'convert', '-', '-resize', '%ix%i!' % (width, height), 'ppm:-'] + convert = Popen(convert, stdin = PIPE, stdout = PIPE, stderr = sys.stderr) + self.data = convert.communicate(self.data)[0] + if not convert.wait() == 0: + raise Exception('Image could not be resized') + + self.data = list(self.data) + self.width, self.height, state, comment = [], [], 0, False for i in range(len(self.data)): b = self.data[i] @@ -132,21 +137,6 @@ class Image: @staticmethod - def have_graphicsmagick(): - ''' - Figure out whether graphicsmagick is installed - - @return :bool Whether graphicsmagick is installed - ''' - import os - path = os.environ['PATH'] if 'PATH' in os.environ else '/usr/local/bin:/usr/bin:/bin'; - for p in [p + '/gm' for p in path.split(':') if not p == '']: - if os.access(p, os.X_OK): - return True - return False - - - @staticmethod def find_icon(name, width, height, preferences): ''' Find and image for in abstract icon |