~ubuntu-branches/ubuntu/saucy/python-imaging/saucy-proposed

« back to all changes in this revision

Viewing changes to .pc/git-updates.diff/PIL/PpmImagePlugin.py

  • Committer: Package Import Robot
  • Author(s): Matthias Klose
  • Date: 2013-03-20 16:44:01 UTC
  • mfrom: (2.1.13 experimental)
  • Revision ID: package-import@ubuntu.com-20130320164401-ptf6m0ttg4zw72az
Tags: 1.1.7+2.0.0-1
Pillow 2.0.0 release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#
2
 
# The Python Imaging Library.
3
 
# $Id$
4
 
#
5
 
# PPM support for PIL
6
 
#
7
 
# History:
8
 
#       96-03-24 fl     Created
9
 
#       98-03-06 fl     Write RGBA images (as RGB, that is)
10
 
#
11
 
# Copyright (c) Secret Labs AB 1997-98.
12
 
# Copyright (c) Fredrik Lundh 1996.
13
 
#
14
 
# See the README file for information on usage and redistribution.
15
 
#
16
 
 
17
 
 
18
 
__version__ = "0.2"
19
 
 
20
 
import string
21
 
 
22
 
import Image, ImageFile
23
 
 
24
 
#
25
 
# --------------------------------------------------------------------
26
 
 
27
 
MODES = {
28
 
    # standard
29
 
    "P4": "1",
30
 
    "P5": "L",
31
 
    "P6": "RGB",
32
 
    # extensions
33
 
    "P0CMYK": "CMYK",
34
 
    # PIL extensions (for test purposes only)
35
 
    "PyP": "P",
36
 
    "PyRGBA": "RGBA",
37
 
    "PyCMYK": "CMYK"
38
 
}
39
 
 
40
 
def _accept(prefix):
41
 
    return prefix[0] == "P" and prefix[1] in "0456y"
42
 
 
43
 
##
44
 
# Image plugin for PBM, PGM, and PPM images.
45
 
 
46
 
class PpmImageFile(ImageFile.ImageFile):
47
 
 
48
 
    format = "PPM"
49
 
    format_description = "Pbmplus image"
50
 
 
51
 
    def _token(self, s = ""):
52
 
        while 1: # read until next whitespace
53
 
            c = self.fp.read(1)
54
 
            if not c or c in string.whitespace:
55
 
                break
56
 
            s = s + c
57
 
        return s
58
 
 
59
 
    def _open(self):
60
 
 
61
 
        # check magic
62
 
        s = self.fp.read(1)
63
 
        if s != "P":
64
 
            raise SyntaxError, "not a PPM file"
65
 
        mode = MODES[self._token(s)]
66
 
 
67
 
        if mode == "1":
68
 
            self.mode = "1"
69
 
            rawmode = "1;I"
70
 
        else:
71
 
            self.mode = rawmode = mode
72
 
 
73
 
        for ix in range(3):
74
 
            while 1:
75
 
                while 1:
76
 
                    s = self.fp.read(1)
77
 
                    if s not in string.whitespace:
78
 
                        break
79
 
                if s != "#":
80
 
                    break
81
 
                s = self.fp.readline()
82
 
            s = int(self._token(s))
83
 
            if ix == 0:
84
 
                xsize = s
85
 
            elif ix == 1:
86
 
                ysize = s
87
 
                if mode == "1":
88
 
                    break
89
 
 
90
 
        self.size = xsize, ysize
91
 
        self.tile = [("raw",
92
 
                     (0, 0, xsize, ysize),
93
 
                     self.fp.tell(),
94
 
                     (rawmode, 0, 1))]
95
 
 
96
 
        # ALTERNATIVE: load via builtin debug function
97
 
        # self.im = Image.core.open_ppm(self.filename)
98
 
        # self.mode = self.im.mode
99
 
        # self.size = self.im.size
100
 
 
101
 
#
102
 
# --------------------------------------------------------------------
103
 
 
104
 
def _save(im, fp, filename):
105
 
    if im.mode == "1":
106
 
        rawmode, head = "1;I", "P4"
107
 
    elif im.mode == "L":
108
 
        rawmode, head = "L", "P5"
109
 
    elif im.mode == "RGB":
110
 
        rawmode, head = "RGB", "P6"
111
 
    elif im.mode == "RGBA":
112
 
        rawmode, head = "RGB", "P6"
113
 
    else:
114
 
        raise IOError, "cannot write mode %s as PPM" % im.mode
115
 
    fp.write(head + "\n%d %d\n" % im.size)
116
 
    if head != "P4":
117
 
        fp.write("255\n")
118
 
    ImageFile._save(im, fp, [("raw", (0,0)+im.size, 0, (rawmode, 0, 1))])
119
 
 
120
 
    # ALTERNATIVE: save via builtin debug function
121
 
    # im._dump(filename)
122
 
 
123
 
#
124
 
# --------------------------------------------------------------------
125
 
 
126
 
Image.register_open("PPM", PpmImageFile, _accept)
127
 
Image.register_save("PPM", _save)
128
 
 
129
 
Image.register_extension("PPM", ".pbm")
130
 
Image.register_extension("PPM", ".pgm")
131
 
Image.register_extension("PPM", ".ppm")