当前位置: 首页>>代码示例>>Python>>正文


Python GifImagePlugin.i16方法代码示例

本文整理汇总了Python中PIL.GifImagePlugin.i16方法的典型用法代码示例。如果您正苦于以下问题:Python GifImagePlugin.i16方法的具体用法?Python GifImagePlugin.i16怎么用?Python GifImagePlugin.i16使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在PIL.GifImagePlugin的用法示例。


在下文中一共展示了GifImagePlugin.i16方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: _open

# 需要导入模块: from PIL import GifImagePlugin [as 别名]
# 或者: from PIL.GifImagePlugin import i16 [as 别名]
 def _open(self):
     # Screen
     s = self.fp.read(13)
     if s[:6] not in ["GIF87a", "GIF89a"]:
         raise SyntaxError, "not a GIF file"
     self.info["version"] = s[:6]
     self.size = GifImagePlugin.i16(s[6:]), GifImagePlugin.i16(s[8:])
     self.tile = []
     flags = ord(s[10])
     bits = (flags & 7) + 1
     if flags & 128:
         # get global palette
         self.info["background"] = ord(s[11])
         # check if palette contains colour indices
         p = self.fp.read(3<<bits)
         for i in range(0, len(p), 3):
             if not (chr(i/3) == p[i] == p[i+1] == p[i+2]):
                 p = ImagePalette.raw("RGB", p)
                 self.global_palette = self.palette = p
                 break
     self.__fp = self.fp
     self.__rewind = self.fp.tell()
     self.seek(0) # get ready to read first frame
开发者ID:raydeal,项目名称:animGIF_PIL,代码行数:25,代码来源:ExtGifImagePlugin.py

示例2: seek

# 需要导入模块: from PIL import GifImagePlugin [as 别名]
# 或者: from PIL.GifImagePlugin import i16 [as 别名]
    def seek(self, frame):
        if frame == 0:
            # rewind
            self.__offset = 0
            self.dispose = None
            self.__frame = -1
            self.__fp.seek(self.__rewind)
        if frame != self.__frame + 1:
            raise ValueError, "cannot seek to frame %d" % frame
        self.__frame = frame
        self.tile = []
        self.fp = self.__fp
        if self.__offset:
            # backup to last frame
            self.fp.seek(self.__offset)
            while self.data():
                pass
            self.__offset = 0
        if self.dispose:
            self.im = self.dispose
            self.dispose = None
        self.palette = self.global_palette
        while 1:
            s = self.fp.read(1)
            if not s or s == ";":
                break
            elif s == "!":
                #
                # extensions
                #
                s = self.fp.read(1)
                block = self.data()
                if ord(s) == 249:
                    #
                    # graphic control extension
                    #
                    flags = ord(block[0])
                    if flags & 1:
                        self.info["transparency"] = ord(block[3])
                    self.info["duration"] = GifImagePlugin.i16(block[1:3]) * 10
                    try:
                        # disposal methods
                        if flags & 8:
                            # replace with background colour
                            self.dispose = Image.core.fill("P", self.size,
                                self.info["background"])
                        elif flags & 16:
                            # replace with previous contents
                            self.dispose = self.im.copy()
                    except (AttributeError, KeyError):
                        pass
                elif ord(s) == 255:
                    #
                    # application extension
                    #
                    self.info["extension"] = block, self.fp.tell()
                    if block[:11] == "NETSCAPE2.0":
                        block = self.data()
                        if len(block) >= 3 and ord(block[0]) == 1:
                            self.info["loop"] = GifImagePlugin.i16(block[1:3])
                while self.data():
                    pass
            elif s == ",":
                #
                # local image
                #
                s = self.fp.read(9)
                # extent
                x0, y0 = GifImagePlugin.i16(s[0:]), GifImagePlugin.i16(s[2:])
                x, y = GifImagePlugin.i16(s[4:]), GifImagePlugin.i16(s[6:])
                x1, y1 = x0 + x, y0 + y
                self.info['frame_box'] = (x0,y0,x1,y1)
                flags = ord(s[8])
                interlace = (flags & 64) != 0
                if flags & 128:
                    bits = (flags & 7) + 1
                    self.palette =\
                        ImagePalette.raw("RGB", self.fp.read(3<<bits))

                # image data
                bits = ord(self.fp.read(1))
                self.__offset = self.fp.tell()
                self.tile = [("gif",
                             (x0, y0, x1, y1),
                             self.__offset,
                             (bits, interlace))]
                break
            else:
                pass
                # raise IOError, "illegal GIF tag `%x`" % ord(s)
        if not self.tile:
            # self.__fp = None
            raise EOFError, "no more images in GIF file"
        self.mode = "L"
        if self.palette:
            self.mode = "P"
开发者ID:raydeal,项目名称:animGIF_PIL,代码行数:98,代码来源:ExtGifImagePlugin.py


注:本文中的PIL.GifImagePlugin.i16方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。