9

1 つまたは複数の標準 PNG をあらかじめ乗算されたアルファに変換できるWindows用の単純なツールまたはプロセスを探しています。

コマンド ライン ツールは理想的です。私は PIL (Python Imaging Library) と Imagemagick に簡単にアクセスできますが、作業が楽になる場合は別のツールをインストールします。

ありがとう!

4

5 に答える 5

13

速度を向上させるためにnumpyでスライスを使用した、cssndrx回答のより完全なバージョン:

import Image
import numpy

im = Image.open('myimage.png').convert('RGBA')
a = numpy.fromstring(im.tostring(), dtype=numpy.uint8)
alphaLayer = a[3::4] / 255.0
a[::4]  *= alphaLayer
a[1::4] *= alphaLayer
a[2::4] *= alphaLayer

im = Image.fromstring("RGBA", im.size, a.tostring())

出来上がり!

于 2011-07-30T09:02:34.633 に答える
2

Python と C で、あなたが探していることを実行するコードを少しだけリリースしました。github にあります: http://github.com/maxme/PNG-Alpha-Premultiplier

Python バージョンは cssndrx 応答に基づいています。C版はlibpngをベースにしています。

于 2011-07-15T21:27:08.387 に答える
1

これは、PIL を介して行うことができるはずです。手順の大まかな概要は次のとおりです。

1) 画像を読み込み、numpy 配列に変換する

    im = Image.open('myimage.png').convert('RGBA')
    matrix = numpy.array(im)

2) マトリックスをその場で変更します。行列は、各行内のピクセルのリストのリストです。ピクセルは [r, g, b, a] として表されます。各 [r, g, b, a] ピクセルを必要な [r, g, b] 値に変換する独自の関数を記述します。

3) を使用してマトリックスを画像に変換し直します。

    new_im = Image.fromarray(matrix)
于 2011-07-07T04:25:17.747 に答える