[Spambayes-checkins] spambayes/spambayes ImageStripper.py,1.5,1.6
Skip Montanaro
montanaro at users.sourceforge.net
Sun Sep 10 00:59:40 CEST 2006
Update of /cvsroot/spambayes/spambayes/spambayes
In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv13966
Modified Files:
ImageStripper.py
Log Message:
I don't want to support netpbm stuff, and it's highly unlikely anyone else
will either, so be a man about it and rip it out now.
Index: ImageStripper.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/spambayes/ImageStripper.py,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** ImageStripper.py 9 Sep 2006 22:18:28 -0000 1.5
--- ImageStripper.py 9 Sep 2006 22:59:38 -0000 1.6
***************
*** 58,86 ****
return ""
- def find_decoders():
- # check for filters to convert to netpbm
- for decode_jpeg in ["jpegtopnm", "djpeg"]:
- if find_program(decode_jpeg):
- break
- else:
- decode_jpeg = None
- for decode_png in ["pngtopnm"]:
- if find_program(decode_png):
- break
- else:
- decode_png = None
- for decode_gif in ["giftopnm"]:
- if find_program(decode_gif):
- break
- else:
- decode_gif = None
-
- decoders = {
- "image/jpeg": decode_jpeg,
- "image/gif": decode_gif,
- "image/png": decode_png,
- }
- return decoders
-
def imconcatlr(left, right):
"""Concatenate two images left to right."""
--- 58,61 ----
***************
*** 101,167 ****
return result
- def pnmsize(pnmfile):
- """Return dimensions of a PNM file."""
- f = open(pnmfile)
- line1 = f.readline()
- line2 = f.readline()
- w, h = [int(n) for n in line2.split()]
- return w, h
-
- def NetPBM_decode_parts(parts, decoders):
- """Decode and assemble a bunch of images using NetPBM tools."""
- rows = []
- tokens = Set()
- for part in parts:
- decoder = decoders.get(part.get_content_type())
- if decoder is None:
- continue
- try:
- bytes = part.get_payload(decode=True)
- except:
- tokens.add("invalid-image:%s" % part.get_content_type())
- continue
-
- if len(bytes) > options["Tokenizer", "max_image_size"]:
- tokens.add("image:big")
- continue # assume it's just a picture for now
-
- fd, imgfile = tempfile.mkstemp()
- os.write(fd, bytes)
- os.close(fd)
-
- fd, pnmfile = tempfile.mkstemp()
- os.close(fd)
- os.system("%s <%s >%s 2>dev.null" % (decoder, imgfile, pnmfile))
- w, h = pnmsize(pnmfile)
- if not rows:
- # first image
- rows.append([pnmfile])
- elif pnmsize(rows[-1][-1])[1] != h:
- # new image, different height => start new row
- rows.append([pnmfile])
- else:
- # new image, same height => extend current row
- rows[-1].append(pnmfile)
-
- for (i, row) in enumerate(rows):
- if len(row) > 1:
- fd, pnmfile = tempfile.mkstemp()
- os.close(fd)
- os.system("pnmcat -lr %s > %s 2>/dev/null" %
- (" ".join(row), pnmfile))
- for f in row:
- os.unlink(f)
- rows[i] = pnmfile
- else:
- rows[i] = row[0]
-
- fd, pnmfile = tempfile.mkstemp()
- os.close(fd)
- os.system("pnmcat -tb %s > %s 2>/dev/null" % (" ".join(rows), pnmfile))
- for f in rows:
- os.unlink(f)
- return [pnmfile], tokens
-
def PIL_decode_parts(parts):
"""Decode and assemble a bunch of images using PIL."""
--- 76,79 ----
***************
*** 298,304 ****
pnmfiles, tokens = PIL_decode_parts(parts)
else:
! if not find_program("pnmcat"):
! return "", Set()
! pnmfiles, tokens = NetPBM_decode_parts(parts, find_decoders())
if pnmfiles:
--- 210,214 ----
pnmfiles, tokens = PIL_decode_parts(parts)
else:
! return "", Set()
if pnmfiles:
More information about the Spambayes-checkins
mailing list