ピクセルのリストをデルタ圧縮してバイナリ ファイルに保存しようとしています。私はこれを行うことができましたが、私が見つけた方法はフレームに約4分かかります.
def getByte_List(self):
values = BitArray("")
for I in range(len(self.delta_values)):
temp = Bits(int= self.delta_values[I], length=self.num_bits_pixel)
values.append(temp)
##start_time = time.time()
bit_stream = pack("uint:16, uint:5, bits", self.intial_value, self.num_bits_pixel, values)
##end_time = time.time()
##print(end_time - start_time)
# Make sure that the list of bits contains a multiple of 8 values
if (len(bit_stream) % 8):
bit_stream.append(Bits(uint=0, length = (8-(len(bit_stream) % 8)))) #####Append? On a pack? (Only work on bitarray? bit_stream = BitArray("")
# Create a list of unsigned integer values to represent each byte in the stream
fmt = (len(bit_stream)/8) * ["uint:8"]
return bit_stream.unpack(fmt)
これは私のコードです。初期値、ピクセルあたりのビット数、およびデルタ値を取得し、それらをビットに変換します。次に、バイトを整列してバイトの整数表現を取得し、それを別の場所で使用します。問題の領域は、各デルタ値をビットに変換する場所 (3 分) とパックする場所 (1 分) です。私がやっていることをより速く、またはバイトを表す整数に直接パックする別の方法を実行することは可能ですか?