Example #1
0
    try:
        im.encoderinfo = params

        # local image header
        _get_local_header(fp, im, offset, 0)

        ImageFile._save(im, fp, [("gif", (0, 0)+im.size, 0, RAWMODE[im.mode])])

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

    finally:
        del im.encoderinfo

    return fp.data


# --------------------------------------------------------------------
# Registry

Image.register_open(GifImageFile.format, GifImageFile, _accept)
Image.register_save(GifImageFile.format, _save)
Image.register_save_all(GifImageFile.format, _save_all)
Image.register_extension(GifImageFile.format, ".gif")
Image.register_mime(GifImageFile.format, "image/gif")

#
# Uncomment the following line if you wish to use NETPBM/PBMPLUS
# instead of the built-in "uncompressed" GIF encoder

# Image.register_save(GifImageFile.format, _save_netpbm)
Example #2
0
from typing import List

from PIL import Image, ImageFile
# workaround initialization code
from PIL.GifImagePlugin import GifImageFile, _accept, _save, _save_all


class AnimatedGifImageFile(GifImageFile):
    def load_end(self):
        ImageFile.ImageFile.load_end(self)


Image.register_open(AnimatedGifImageFile.format, AnimatedGifImageFile, _accept)
Image.register_save(AnimatedGifImageFile.format, _save)
Image.register_save_all(AnimatedGifImageFile.format, _save_all)
Image.register_extension(AnimatedGifImageFile.format, ".gif")
Image.register_mime(AnimatedGifImageFile.format, "image/gif")

# end of workaround initialization code


def get_frames(gif: Image.Image) -> List[Image.Image]:
    """
    Extract all frames from gif.

    This function is just slight adjustment of the for-cycle from the workaround.
    """
    last_frame = None
    all_frames = []
    i = 0
Example #3
0
    try:
        im.encoderinfo = params

        # local image header
        _get_local_header(fp, im, offset, 0)

        ImageFile._save(im, fp, [("gif", (0, 0)+im.size, 0, RAWMODE[im.mode])])

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

    finally:
        del im.encoderinfo

    return fp.data


# --------------------------------------------------------------------
# Registry

Image.register_open(GifImageFile.format, GifImageFile, _accept)
Image.register_save(GifImageFile.format, _save)
Image.register_save_all(GifImageFile.format, _save_all)
Image.register_extension(GifImageFile.format, ".gif")
Image.register_mime(GifImageFile.format, "image/gif")

#
# Uncomment the following line if you wish to use NETPBM/PBMPLUS
# instead of the built-in "uncompressed" GIF encoder

# Image.register_save(GifImageFile.format, _save_netpbm)
Example #4
0
        # Write out the data for this frame to the output
        data_descriptor = QGFFrameDataDescriptorV1()
        data_descriptor.data = image_data
        vprint(
            f'{f"Frame {idx:3d} data":26s} {fp.tell():5d}d / {fp.tell():04X}h')
        data_descriptor.write(fp)

    # Iterate over each if the input frames, writing it to the output in the process
    _for_all_frames(_write_frame)

    # Go back and update the graphics descriptor now that we can determine the final file size
    graphics_descriptor.total_file_size = fp.tell()
    fp.seek(graphics_descriptor_location, 0)
    graphics_descriptor.write(fp)

    # Go back and update the frame offsets now that they're written to the file
    fp.seek(frame_offset_location, 0)
    frame_offsets.write(fp)


########################################################################################################################

# Register with PIL so that it knows about the QGF format
Image.register_open(QGFImageFile.format, QGFImageFile, _accept)
Image.register_save(QGFImageFile.format, _save)
Image.register_save_all(QGFImageFile.format, _save)
Image.register_extension(QGFImageFile.format,
                         f".{QGFImageFile.format.lower()}")
Image.register_mime(QGFImageFile.format,
                    f"image/{QGFImageFile.format.lower()}")
Example #5
0
            struct.pack(">4sIH?H", b"030\x00", 17 + length,
                        len(frames_buffers), 0,
                        1 if len(positions) > 1 else 0))

    for buf in frames_buffers:
        fp.write(buf)


def _debug(image):
    print('Info' + str(image.info))
    for i in range(image.n_frames):
        image.seek(i)
        print("Frame #%d: mode: %s size=%dx%d" %
              (i, image.mode, image.size[0], image.size[1]))
        print("\tHeader: ", image.header)


#
# Registration
#
Image.register_open(FACImageFile.format, FACImageFile, _accept)
Image.register_save(FACImageFile.format, _save)
Image.register_save_all(FACImageFile.format, _save_all)

Image.register_extension(FACImageFile.format, ".fac")
Image.register_mime(FACImageFile.format, "image/fac")

if __name__ == "__main__":
    import doctest
    doctest.testmod()
        xref.append(fp.tell())
        _obj(fp, pageNumber * 3 + 5, Length=len(op.fp.getvalue()))

        fp.write("stream\n")
        fp.fp.write(op.fp.getvalue())
        fp.write("\nendstream\n")

        _endobj(fp)

    #
    # trailer
    startxref = fp.tell()
    fp.write("xref\n0 %d\n0000000000 65535 f \n" % len(xref))
    for x in xref[1:]:
        fp.write("%010d 00000 n \n" % x)
    fp.write("trailer\n<<\n/Size %d\n/Root 1 0 R\n>>\n" % len(xref))
    fp.write("startxref\n%d\n%%%%EOF\n" % startxref)
    if hasattr(fp, "flush"):
        fp.flush()


#
# --------------------------------------------------------------------

Image.register_save("PDF", _save)
Image.register_save_all("PDF", _save_all)

Image.register_extension("PDF", ".pdf")

Image.register_mime("PDF", "application/pdf")
Example #7
0
        xref.append(fp.tell())
        _obj(fp, pageNumber*3+5, Length=len(op.fp.getvalue()))

        fp.write("stream\n")
        fp.fp.write(op.fp.getvalue())
        fp.write("\nendstream\n")

        _endobj(fp)

    #
    # trailer
    startxref = fp.tell()
    fp.write("xref\n0 %d\n0000000000 65535 f \n" % len(xref))
    for x in xref[1:]:
        fp.write("%010d 00000 n \n" % x)
    fp.write("trailer\n<<\n/Size %d\n/Root 1 0 R\n>>\n" % len(xref))
    fp.write("startxref\n%d\n%%%%EOF\n" % startxref)
    if hasattr(fp, "flush"):
        fp.flush()

#
# --------------------------------------------------------------------

Image.register_save("PDF", _save)
Image.register_save_all("PDF", _save_all)

Image.register_extension("PDF", ".pdf")

Image.register_mime("PDF", "application/pdf")