def __call__(self):
plte = self.plte
a = self.idRaster
#a = array('B') #unsigned 1byte int
#a.fromlist(idRaster)
### Why is this here? byteswap has no effect on 'uint8'
#if SYSTEM_BYTEORDER == '\x00': #little
# a.byteswap() #to big (network)
# This is used directly in the final PNG, must be zlib.
cIdRaster = zlib.compress(numpy.getbuffer(a))
size = pack('!I',len(cIdRaster))
crc = pack('!I',crc32('IDAT'+cIdRaster) & 0xFFFFFFFF)
idat = size+'IDAT'+cIdRaster+crc
#b = array(UNSIGNED_ITEM_TYPES[4]) #unsigned 4byte int
#b.fromlist(plte)
#cPLTE = zlib.compress(plte.tostring())
cPLTE = zlib.compress(numpy.getbuffer(plte))
s = SYSTEM_BYTEORDER + pack('!LL',len(idat),len(cPLTE)) # 9bytes <--- ByteOrder(1byte), len of idat(4bytes), len of cPLTE(4bytes)
s = s+idat+cPLTE
return s
评论列表
文章目录