マスク(オーバーレイ画像)を使用してpng画像からオーバーレイを削除するプログラムを書いています
画像1と2を持っている画像3を達成したい.
私はロックビットを使ってみたり、いろいろ試してみましたが、正しい計算ができないと思います
rgbValues はオーバーレイのバイト配列で、rgbValues2 は指定されたイメージのバイト配列です。
for (int counter = 0; counter < rgbValues.Length; counter ++)
{
int x = (counter / 4) * 4;
if (rgbValues[x + 3] != 0)
{
if (rgbValues[x + 3] == rgbValues2[x + 3])
{
rgbValues2[counter] = 0;
}
else
{
float a1 = (float)rgbValues[counter];
float a2 = (float)rgbValues2[counter] ;
float b1 = (float)rgbValues[x + 3];
float b2 = (float)rgbValues2[x + 3];
rgbValues2[counter] = (byte)(2 * a2- a1);
}
}
}