~ubuntu-branches/ubuntu/wily/python-imaging/wily

« 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-01-31 20:49:20 UTC
  • mfrom: (1.1.4)
  • mto: This revision was merged to the branch mainline in revision 29.
  • Revision ID: package-import@ubuntu.com-20130131204920-7tnuhqhlsqdza4c2
Rewrite build dependencies to allow cross builds.

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")