0

画像のピクセルデータであるフロートのリストがあります。4つのフロートごとにRGBAピクセルが作成されます。その代わりに、そのリストをBGRA形式(順序)に変換する最も効率的な方法は何でしょうか?

私が持っているもの:

[R, G, B, A, R, G, B, A]

必要なもの:

[B, G, R, A, B, G, R, A]
4

4 に答える 4

1
>>> v = [1,2,3,4,5,6,7,8]
>>> [v[a if a & 1 else a ^ 2] for a in range(len(v))]
[3, 2, 1, 4, 7, 6, 5, 8]
于 2012-07-08T09:52:06.993 に答える
1

itertools のgrouper レシピの使用

>>> from itertools import chain, izip_longest
>>> def grouper(n, iterable, fillvalue=None):
        "Collect data into fixed-length chunks or blocks"
        # grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx
        args = [iter(iterable)] * n
        return izip_longest(fillvalue=fillvalue, *args)

>>> pixels = [70, 140, 210, 0.5, 60, 100, 200, 0.7]
>>> list(chain.from_iterable((b,g,r,a) for r,g,b,a in grouper(4, pixels)))
[210, 140, 70, 0.5, 200, 100, 60, 0.7]
于 2012-07-08T09:07:15.160 に答える
0
from itertools import chain,izip
L = [1,2,3,4,1,2,3,4]
print list(chain(*((C,B,A,D) for A,B,C,D in izip(*[iter(L)]*4))))
于 2012-07-08T09:20:02.527 に答える