Пример #1
1
def _save(im, fp, filename):

    if _imaging_gif:
        # call external driver
        try:
            _imaging_gif.save(im, fp, filename)
            return
        except IOError:
            pass  # write uncompressed file

    try:
        rawmode = RAWMODE[im.mode]
        imOut = im
    except KeyError:
        # convert on the fly (EXPERIMENTAL -- I'm not sure PIL
        # should automatically convert images on save...)
        if Image.getmodebase(im.mode) == "RGB":
            imOut = im.convert("P")
            rawmode = "P"
        else:
            imOut = im.convert("L")
            rawmode = "L"

    # header
    for s in getheader(imOut, im.encoderinfo):
        fp.write(s)

    flags = 0

    try:
        interlace = im.encoderinfo["interlace"]
    except:
        # default is on (since we're writing uncompressed images)
        interlace = 1
        flags = flags | 64

    # local image header
    fp.write(
        "," + o16(0) + o16(0) + o16(im.size[0]) + o16(im.size[1]) + chr(flags) + chr(8)  # bounding box  # size  # flags
    )  # bits

    imOut.encoderconfig = (8, interlace)

    ImageFile._save(imOut, fp, [("gif", (0, 0) + im.size, 0, rawmode)])

    fp.write("\0")  # end of image data

    fp.write(";")  # end of file

    try:
        fp.flush()
    except:
        pass
def getcolor(color, mode):
    # same as getrgb, but converts the result to the given mode
    color = getrgb(color)
    if mode == "RGB":
        return color
    if mode == "RGBA":
        r, g, b = color
        return r, g, b, 255
    if Image.getmodebase(mode) == "L":
        r, g, b = color
        return (r * 299 + g * 587 + b * 114) / 1000
    return color
Пример #3
0
def getcolor(color, mode):
    # same as getrgb, but converts the result to the given mode
    color = getrgb(color)
    if mode == "RGB":
        return color
    if mode == "RGBA":
        r, g, b = color
        return r, g, b, 255
    if Image.getmodebase(mode) == "L":
        r, g, b = color
        return (r * 299 + g * 587 + b * 114) / 1000
    return color
Пример #4
0
 def __init__(self, image, size=None):
     if hasattr(image, "mode") and hasattr(image, "size"):
         mode = image.mode
         size = image.size
     else:
         mode = image
         image = None
     if mode not in ["1", "L", "P", "RGB"]:
         mode = Image.getmodebase(mode)
     self.image = Image.core.display(mode, size)
     self.mode = mode
     self.size = size
     if image:
         self.paste(image)
Пример #5
0
    def show(self, image, **options):

        # save temporary image to disk
        if image.mode[:4] == "I;16":
            # @PIL88 @PIL101
            # "I;16" isn't an 'official' mode, but we still want to
            # provide a simple way to show 16-bit images.
            base = "L"
        else:
            base = Image.getmodebase(image.mode)
        if base != image.mode and image.mode != "1":
            image = image.convert(base)

        self.show_image(image, **options)
Пример #6
0
 def __init__(self, image, size=None):
     if hasattr(image, "mode") and hasattr(image, "size"):
         mode = image.mode
         size = image.size
     else:
         mode = image
         image = None
     if mode not in ["1", "L", "P", "RGB"]:
         mode = Image.getmodebase(mode)
     self.image = Image.core.display(mode, size)
     self.mode = mode
     self.size = size
     if image:
         self.paste(image)
Пример #7
0
    def show(self, image, **options):

        # save temporary image to disk
        if image.mode[:4] == "I;16":
            # @PIL88 @PIL101
            # "I;16" isn't an 'official' mode, but we still want to
            # provide a simple way to show 16-bit images.
            base = "L"
        else:
            base = Image.getmodebase(image.mode)
        if base != image.mode and image.mode != "1":
            image = image.convert(base)

        self.show_image(image, **options)
Пример #8
0
    def __init__(self, image=None, size=None, **kw):

        # Tk compatibility: file or data
        if image is None:
            if kw.has_key("file"):
                image = Image.open(kw["file"])
                del kw["file"]
            elif kw.has_key("data"):
                from StringIO import StringIO

                image = Image.open(StringIO(kw["data"]))
                del kw["data"]

        if hasattr(image, "mode") and hasattr(image, "size"):
            # got an image instead of a mode
            mode = image.mode
            if mode == "P":
                # palette mapped data
                image.load()
                try:
                    mode = image.palette.mode
                except AttributeError:
                    mode = "RGB"  # default
            size = image.size
            kw["width"], kw["height"] = size
        else:
            mode = image
            image = None

        if mode not in ["1", "L", "RGB", "RGBA"]:
            mode = Image.getmodebase(mode)

        self.__mode = mode
        self.__size = size
        self.__photo = apply(Tkinter.PhotoImage, (), kw)
        self.tk = self.__photo.tk
        if image:
            self.paste(image)
Пример #9
0
    def __init__(self, image=None, size=None, **kw):

        # Tk compatibility: file or data
        if image is None:
            if kw.has_key("file"):
                image = Image.open(kw["file"])
                del kw["file"]
            elif kw.has_key("data"):
                from StringIO import StringIO
                image = Image.open(StringIO(kw["data"]))
                del kw["data"]

        if hasattr(image, "mode") and hasattr(image, "size"):
            # got an image instead of a mode
            mode = image.mode
            if mode == "P":
                # palette mapped data
                image.load()
                try:
                    mode = image.palette.mode
                except AttributeError:
                    mode = "RGB"  # default
            size = image.size
            kw["width"], kw["height"] = size
        else:
            mode = image
            image = None

        if mode not in ["1", "L", "RGB", "RGBA"]:
            mode = Image.getmodebase(mode)

        self.__mode = mode
        self.__size = size
        self.__photo = apply(Tkinter.PhotoImage, (), kw)
        self.tk = self.__photo.tk
        if image:
            self.paste(image)
Пример #10
0
def _save(im, fp, filename):

    if _imaging_gif:
        # call external driver
        try:
            _imaging_gif.save(im, fp, filename)
            return
        except IOError:
            pass # write uncompressed file

    try:
        rawmode = RAWMODE[im.mode]
        imOut = im
    except KeyError:
        # convert on the fly (EXPERIMENTAL -- I'm not sure PIL
        # should automatically convert images on save...)
        if Image.getmodebase(im.mode) == "RGB":
            imOut = im.convert("P")
            rawmode = "P"
        else:
            imOut = im.convert("L")
            rawmode = "L"

    # header
    for s in getheader(imOut, im.encoderinfo):
        fp.write(s)

    flags = 0

    try:
        interlace = im.encoderinfo["interlace"]
    except KeyError:
        interlace = 1

    # workaround for @PIL153
    if min(im.size) < 16:
        interlace = 0

    if interlace:
        flags = flags | 64

    try:
        transparency = im.encoderinfo["transparency"]
    except KeyError:
        pass
    else:
        # transparency extension block
        fp.write("!" +
                 chr(249) +             # extension intro
                 chr(4) +               # length
                 chr(1) +               # transparency info present
                 o16(0) +               # duration
                 chr(int(transparency)) # transparency index
                 + chr(0))

    # local image header
    fp.write("," +
             o16(0) + o16(0) +          # bounding box
             o16(im.size[0]) +          # size
             o16(im.size[1]) +
             chr(flags) +               # flags
             chr(8))                    # bits

    imOut.encoderconfig = (8, interlace)

    ImageFile._save(imOut, fp, [("gif", (0,0)+im.size, 0, rawmode)])

    fp.write("\0") # end of image data

    fp.write(";") # end of file

    try:
        fp.flush()
    except: pass
def _save(im, fp, filename):

    if _imaging_gif:
        # call external driver
        try:
            _imaging_gif.save(im, fp, filename)
            return
        except IOError:
            pass  # write uncompressed file

    try:
        rawmode = RAWMODE[im.mode]
        imOut = im
    except KeyError:
        # convert on the fly (EXPERIMENTAL -- I'm not sure PIL
        # should automatically convert images on save...)
        if Image.getmodebase(im.mode) == "RGB":
            imOut = im.convert("P")
            rawmode = "P"
        else:
            imOut = im.convert("L")
            rawmode = "L"

    # header
    for s in getheader(imOut, im.encoderinfo):
        fp.write(s)

    flags = 0

    try:
        interlace = im.encoderinfo["interlace"]
    except KeyError:
        interlace = 1

    # workaround for @PIL153
    if min(im.size) < 16:
        interlace = 0

    if interlace:
        flags = flags | 64

    try:
        transparency = im.encoderinfo["transparency"]
    except KeyError:
        pass
    else:
        # transparency extension block
        fp.write("!" + chr(249) +  # extension intro
                 chr(4) +  # length
                 chr(1) +  # transparency info present
                 o16(0) +  # duration
                 chr(int(transparency))  # transparency index
                 + chr(0))

    # local image header
    fp.write("," + o16(0) + o16(0) +  # bounding box
             o16(im.size[0]) +  # size
             o16(im.size[1]) + chr(flags) +  # flags
             chr(8))  # bits

    imOut.encoderconfig = (8, interlace)

    ImageFile._save(imOut, fp, [("gif", (0, 0) + im.size, 0, rawmode)])

    fp.write("\0")  # end of image data

    fp.write(";")  # end of file

    try:
        fp.flush()
    except:
        pass