イメージをコピーしています。 (私の実際のコードはイメージのサイズを変更していますが、それは私の質問には関係ありません)。Graphics.DrawImage()を使用して透明/アルファチャンネルで画像を描画する
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);
}
これはsrc
は、(例えば、GIFなど)透明又は(例えば、PNGなど)アルファチャンネルの画像からロードされていない限り大きな動作するように思われます。
DrawImage()
さんは、透明画像/アルファチャンネルを新しい画像に転送し、ファイルを保存するときにそれらを保持するにはどうすればよいですか?
質問は 'saveFormat'変数の値は何ですか? 'PixelFormat.Format32bppArgb'(あるいはアルファチャンネルを扱う別のフォーマット)でなければなりません。 'Image dest = new Bitmap(width、height、PixelFormat.Format32bppArgb))'を使ってみてください。 –
これはアルファチャンネルでは機能しているようですが、GIFの透明では機能しません。 'saveFormat'は、入力ファイルのフォーマットによって異なります。入力ファイルがアルファチャンネルをサポートしていない場合は、画像にアルファチャンネルのピクセルが含まれていないと想定することは安全です。 –
それでは、GIFファイルの 'saveFormat'の値は何ですか?:) –