codecs.py 文件源码

python
阅读 25 收藏 0 点赞 0 评论 0

项目:pytoshop 作者: mdboom 项目源码 文件源码
def compress_rle(fd,      # type: BinaryIO
                 image,   # type: np.ndarray
                 depth,   # type: int
                 version  # type: int
                 ):       # type: (...) -> None
    """
    Write a Numpy array to a run length encoded stream.

{}
    """
    if depth == 1:  # pragma: no cover
        raise ValueError(
            "rle compression is not supported for 1-bit images")

    start = fd.tell()
    if version == 1:
        fd.seek(image.shape[0] * 2, 1)
        lengths = np.empty((len(image),), dtype='>u2')
    else:
        fd.seek(image.shape[0] * 4, 1)
        lengths = np.empty((len(image),), dtype='>u4')

    if util.needs_byteswap(image):
        for i, row in enumerate(image):
            row = util.do_byteswap(row)
            packed = packbits.encode(row)
            lengths[i] = len(packed)
            fd.write(packed)
    else:
        for i, row in enumerate(image):
            packed = packbits.encode(row)
            lengths[i] = len(packed)
            fd.write(packed)

    end = fd.tell()
    fd.seek(start)
    fd.write(lengths.tobytes())
    fd.seek(end)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号