From 4343f3f08d293bf083ad7d6f12f5af9fa37bdab4 Mon Sep 17 00:00:00 2001 From: "beville@gmail.com" Date: Sun, 16 Dec 2012 18:09:26 +0000 Subject: [PATCH] Gracefully deal with bad image data git-svn-id: http://comictagger.googlecode.com/svn/trunk@266 6c5673fe-1810-88d6-992b-cd32ca31540c --- imagehasher.py | 13 +++++++++---- issueidentifier.py | 10 ++++++---- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/imagehasher.py b/imagehasher.py index 28cc9c9..c013287 100755 --- a/imagehasher.py +++ b/imagehasher.py @@ -17,11 +17,16 @@ class ImageHasher(object): if path is None and data is None: raise IOError - elif path is not None: - self.image = Image.open(path) else: - self.image = Image.open(StringIO.StringIO(data)) - + try: + if path is not None: + self.image = Image.open(path) + else: + self.image = Image.open(StringIO.StringIO(data)) + except: + print "Image data seems corrupted!" + # just generate a bogus image + self.image = Image.new( "L", (1,1)) def average_hash(self): image = self.image.resize((self.width, self.height), Image.ANTIALIAS).convert("L") diff --git a/issueidentifier.py b/issueidentifier.py index 53c525c..1384e13 100644 --- a/issueidentifier.py +++ b/issueidentifier.py @@ -107,11 +107,13 @@ class IssueIdentifier: return ImageHasher( data=image_data ).average_hash() def getAspectRatio( self, image_data ): + try: + im = Image.open(StringIO.StringIO(image_data)) + w,h = im.size + return float(h)/float(w) + except: + return 1.5 - im = Image.open(StringIO.StringIO(image_data)) - w,h = im.size - return float(h)/float(w) - def cropCover( self, image_data ): im = Image.open(StringIO.StringIO(image_data))