Kopiuję obraz. (Mój rzeczywisty kod zmienia rozmiar obrazu, ale to nie ma znaczenia dla mojego pytania.) Mój kod wygląda mniej więcej tak.Używanie Graphics.DrawImage() do rysowania obrazu z przezroczystością/kanałem alfa
Image src = ...
using (Image dest = new Bitmap(width, height))
{
Graphics graph = Graphics.FromImage(dest);
graph.InterpolationMode = InterpolationMode.HighQualityBicubic;
graph.DrawImage(src, 0, 0, width, height);
dest.Save(filename, saveFormat);
}
Wydaje się doskonale chyba src
jest ładowany obraz z folii (np GIF) lub kanał alfa (np PNG).
W jaki sposób mogę uzyskać DrawImage()
przeniesienie folii przezroczystych/alfa do nowego obrazu, a następnie zachować je po zapisaniu pliku?
Pytanie brzmi, jaka jest wartość zmiennej 'saveFormat'? Powinien to być 'PixelFormat.Format32bppArgb' (lub inny format obsługiwany z kanałem alfa). Spróbuj także: 'using (Image dest = new Bitmap (width, height, PixelFormat.Format32bppArgb))'. –
To wydaje się działać dla kanałów alfa, ale nie dla przezroczy GIF. 'saveFormat' będzie się różnić w zależności od formatu pliku wejściowego. Jeśli plik wejściowy nie obsługuje kanału alfa, można założyć, że obraz nie będzie zawierał pikseli kanału alfa. –
Jaka jest więc wartość 'saveFormat' dla plików GIF, a następnie :)? –