До Windows 7 (и новых кодеков изображений: WIC) я использовал метод следующий (очень быстрый, но грязный) для создания кодированного изображения Gif с белым, как прозрачный цвет:.NET Framework и прозрачность 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 использовался для кодирования Gif со стандартной палитрой, в которой индекс 255 был белым цветом.
В Windows 7 этот метод больше не работает. Кажется, что стандартная палитра изменена, и теперь индекс 251 является белым цветом. Однако я не уверен. Может быть, новый Gif-кодер динамически генерирует палитру на основе используемых цветов?
Мой вопрос: У кого-нибудь есть понимание нового Gif-кодировщика Windows 7 и что было бы хорошим и быстрым способом сделать цвет белым прозрачным?
Спасибо за ваш ответ. На самом деле ничего не происходит с кодировщиком Windows 7 Gif. Только, он ведет себя по-другому по сравнению с предыдущим кодировщиком: он создает другую (но правильную) палитру. Поскольку эта палитра изменилась, мой код больше не работает. Мне интересно, есть ли быстрый способ определить, что индекс имеет белый цвет в палитре, поэтому я могу установить этот индекс как прозрачный. – Corne