Bir görüntüyü kopyalıyorum. (Gerçek kodum görüntüyü yeniden boyutlandırıyor ama bu benim soruyla alakalı değil.) Kodum böyle bir şeye benziyor.Saydamlık/Alfa Kanallı Görüntü Çizmek için Graphics.DrawImage() öğesini kullanma
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);
}
Bu src
(GIF gibi) asetat ya da (PNG gibi) bir alfa kanalı ile bir görüntü yüklenen sürece büyük bir iş gibi görünüyor.
Asetatları/alfa kanalı yeni görüntüye aktarmak için DrawImage()
'u nasıl alabilirim ve sonra dosyayı kaydettiğimde onları saklayabilir miyim?
Soru "saveFormat" değişkeninin değeri nedir? "PixelFormat.Format32bppArgb" (veya alfa kanalı ele alınmış başka bir biçim) olmalıdır. Ayrıca şunu deneyin: 'kullanarak (Image dest = yeni Bitmap (genişlik, yükseklik, PixelFormat.Format32bppArgb))'. –
Bu, alfa kanalları için çalışıyor gibi görünüyor, ancak GIF asetatları için değil. 'saveFormat', giriş dosyasının formatına bağlı olarak değişecektir. Giriş dosyası alfa kanalı desteklemiyorsa, görüntünün alfa kanalı pikselleri içermeyeceğini varsaymak güvenlidir. –
Peki, GIF dosyaları için 'saveFormat'ın değeri nedir o zaman :)? –