当前位置:  开发笔记 > 编程语言 > 正文

我该如何实现位图?

如何解决《我该如何实现位图?》经验,为你挑选了1个好方法。

我希望在Python中实现一个2d位映射类.该课程有以下要求:

    允许创建任意大小的2d位图.即创建一个8 x 8位图(8字节),如:

    bitmap = Bitmap(8,8)
    

    提供一个API来访问这个2d映射中的位作为布尔值或甚至整数值,即:

    if bitmap[1, 2] or bitmap.get(0, 1)
    

    能够以打包的二进制数据的形式检索数据.本质上,它将位图的每一行连接起来并作为二进制数据返回.它可以填充到最近的字节或类似的东西.

    bitmap.data()
    

    能够从检索到的二进制数据创建新地图:

    new_bitmap = Bitmap(8, 8, bitmap.data())
    

我知道Python能够执行二进制操作,但我想知道如何最好地使用它们来实现这个类.



1> gimel..:

Bit-Packing numpy(SciPY)数组可以满足您的需求.该示例显示4x3位(布尔)数组打包为4个8位字节.unpackbits将 uint8数组解压缩为可在计算中使用的布尔输出数组.

>>> a = np.array([[[1,0,1],
...                [0,1,0]],
...               [[1,1,0],
...                [0,0,1]]])
>>> b = np.packbits(a,axis=-1)
>>> b
array([[[160],[64]],[[192],[32]]], dtype=uint8)

如果您需要1位像素图像,PIL就是您的最佳选择.

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有