1 つまたは複数の標準 PNG をあらかじめ乗算されたアルファに変換できるWindows用の単純なツールまたはプロセスを探しています。
コマンド ライン ツールは理想的です。私は PIL (Python Imaging Library) と Imagemagick に簡単にアクセスできますが、作業が楽になる場合は別のツールをインストールします。
ありがとう!
1 つまたは複数の標準 PNG をあらかじめ乗算されたアルファに変換できるWindows用の単純なツールまたはプロセスを探しています。
コマンド ライン ツールは理想的です。私は PIL (Python Imaging Library) と Imagemagick に簡単にアクセスできますが、作業が楽になる場合は別のツールをインストールします。
ありがとう!
速度を向上させるために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())
出来上がり!
Python と C で、あなたが探していることを実行するコードを少しだけリリースしました。github にあります: http://github.com/maxme/PNG-Alpha-Premultiplier
Python バージョンは cssndrx 応答に基づいています。C版はlibpngをベースにしています。
これは、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)