0

Use check_call(), add workaround for broken pngnq

Also -f pngnq to write files, in case something didn't work
last render.
This commit is contained in:
CounterPillow
2014-05-06 22:31:23 +02:00
parent 8817972b36
commit 03561dccfa

View File

@@ -28,7 +28,7 @@ class Optimizer:
raise NotImplementedError("I can't let you do that, Dave.")
def fire_and_forget(self, args):
subprocess.Popen(args, stderr=subprocess.STDOUT, stdout=subprocess.PIPE).communicate()[0]
subprocess.check_call(args)
def check_availability(self):
path = os.environ.get("PATH").split(os.pathsep)
@@ -46,7 +46,7 @@ class NonAtomicOptimizer(Optimizer):
os.rename(img + ".tmp", img)
def fire_and_forget(self, args, img):
subprocess.Popen(args, stderr=subprocess.STDOUT, stdout=subprocess.PIPE).communicate()[0]
subprocess.check_call(args)
self.cleanup(img)
class PNGOptimizer:
@@ -76,8 +76,13 @@ class pngnq(NonAtomicOptimizer, PNGOptimizer):
else:
extension = ".png.tmp"
NonAtomicOptimizer.fire_and_forget(self, [self.binaryname, "-s", str(self.sampling),
"-Q", self.dither, "-e", extension, img], img)
args = [self.binaryname, "-s", str(self.sampling), "-f", "-e", extension, img]
# Workaround for poopbuntu 12.04 which ships an old broken pngnq
if self.dither != "n":
args.insert(1, "-Q")
args.insert(2, self.dither)
NonAtomicOptimizer.fire_and_forget(self, args, img)
class pngcrush(NonAtomicOptimizer, PNGOptimizer):
binaryname = "pngcrush"