0

これはコードです:

if (Form1.sf != null)
            {
                radarDI = new DirectoryInfo(Form1.sf);
                radarFiles = radarDI.GetFiles("*.png");
                for (int i = radarFiles.Length - 1; i >= 0; i--)
                {
                    radarImage = Image.FromFile(radarFiles[i].Name);
                    radarImage.Save(FileName, System.Drawing.Imaging.ImageFormat.Gif);
                    myGifListRadar.Add(radarFiles[i].Name);
                    if (myGifListRadar.Count == 5)
                    {
                        break;
                    }
                }
                radar_animation.MakeGIF(myGifListRadar, @"d:\RadarGifAnimatoion.gif", 8, true);
            }

すべてのpngファイルをgifに変換したい。アニメーションgifを作成する必要があり、gifファイルのみを取得しているためです。したがって、pngファイルをハードディスクに保存して変換を行い、ハードディスクからgifファイルを読み戻します。

radarImage.Save(FileName, System.Drawing.Imaging.ImageFormat.Gif);

FileName は、後でファイルを保存してから読み込んで使用する必要があります。問題は、最初にハードディスクに保存せずにファイルを gif に変換する方法があるかどうかです。ファイルをハードディスクに保存して変換し、FileInfo を使用して gif として再度読み取りますか?

ちょうど更新されました:

using (var ms = new MemoryStream())
            {
                if (Form1.sf != null)
                {
                    radarDI = new DirectoryInfo(Form1.sf);
                    radarFiles = radarDI.GetFiles("*.png");
                    for (int i = radarFiles.Length - 1; i >= 0; i--)
                    {
                        radarImage = Image.FromFile(radarFiles[i].FullName);
                        radarImage.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
                        myGifListRadar.Add(radarFiles[i].Name);
                        if (myGifListRadar.Count == 5)
                        {
                            break;
                        }
                    }
                }
                radar_animation.MakeGIF(myGifListRadar, @"d:\RadarGifAnimatoion.gif", 8, true);
            }

しかし今、この部分:

radarImage.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
                            myGifListRadar.Add(radarFiles[i].Name);

myGifListRadar は List です。どうすれば、raderImage を文字列ファイル名として List に追加できますか?

4

1 に答える 1

5

使用Image.Save(Stream, ImageFormat):

using (var ms = new MemoryStream)
{
    radarImage.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
    // do something with ms
}

複数のフレームで GIF を作成する方法によっては、これは不要な場合があります。個別の を取得して、個別Imageの GIF を作成してからそれらをマージする代わりに、複数フレームの GIF を直接作成できますか?

于 2013-01-28T17:40:54.503 に答える