Windows 7 (および新しい画像コーデック: WIC) の前に、次の (非常に高速ですが汚い) メソッドを使用して、透明色として白の GIF エンコードされた画像を作成しました。
MemoryStream target = new memoryStream(4096);
image.Save(target, imageFormat.Gif);
byte[] data = target.ToArray();
// Set transparency
// Check Graphic Control Extension signature (0x21 0xF9)
if (data[0x30D] == 0x21 && data[0x30E] == 0xF9)
data[0x313] = 0xFF; // Set palette index 255 (=white) as transparent
.NET は、インデックス 255 が白色である標準パレットを使用して Gif をエンコードしていたため、この方法が機能しました。
ただし、Windows 7 では、この方法は機能しなくなりました。標準パレットが変更され、インデックス 251 が白になったようです。しかし、よくわかりません。おそらく、新しい Gif エンコーダーは、使用されている色に基づいてパレットを動的に生成していますか?
私の質問: Windows 7 の新しい Gif エンコーダーについて洞察を持っている人はいますか?また、白を透明にするための適切で迅速な方法は何ですか?