使用NGif创建动画GIF后无法删除jpg文件

时间:2014-06-09 18:58:37

标签: c# visual-studio-2012 file-io ngif

我已编程使用NGif从一些jog文件创建动画GIF文件。正在创建动画文件(只是自动幻灯片放映)没有任何问题。 GIF的源图像(我创建动画的jpg文件)位于“Temp2”文件夹中。我想删除包含文件的文件夹,但程序无法处理并给出消息:“......文件仍在被其他进程使用”。

我创建的功能如下:

public void Create_Animated_GIF()
        {
            String Output_File_Path = Environment.CurrentDirectory + "\\Animation.gif";

            AnimatedGifEncoder GEncoder = new AnimatedGifEncoder();

            GEncoder.Start(Output_File_Path);
            GEncoder.SetDelay(100);
            GEncoder.SetRepeat(0);

            for (int i = 0; i < 2; i++)
            {
                GEncoder.AddFrame(System.Drawing.Image.FromFile(Image_URLs[i]));
            }

            /*
            try
            {
                System.IO.Directory.Delete(Environment.CurrentDirectory + "\\Temp2", true);
            }
            catch
            {
            }
            */

            GEncoder.Finish();

            System.IO.Directory.Delete(Environment.CurrentDirectory + "\\Temp2", true);
        }

在这里,我尝试了try-catch;它不起作用!

我使用这个Temp2文件夹的另一个功能如下:


public void Crop_Images()
        {
            if (!System.IO.Directory.Exists(Environment.CurrentDirectory + "\\Temp2\\"))
                System.IO.Directory.CreateDirectory(Environment.CurrentDirectory + "\\Temp2\\");

            for (int i = 0; i < 2; i++)
            {
                System.Drawing.Image Source_Image = System.Drawing.Image.FromFile(Environment.CurrentDirectory + "\\Temp\\" + i.ToString() + ".jpg");

                System.Drawing.Bitmap Source_Image_Btmp = new System.Drawing.Bitmap(Source_Image);

                System.Drawing.Rectangle Destin_Rect = new System.Drawing.Rectangle(1327, 1330, 632, 491);

                System.Drawing.Image Destin_Image = Source_Image_Btmp.Clone(Destin_Rect, Source_Image_Btmp.PixelFormat);

                Image_URLs[i] = Environment.CurrentDirectory + "\\Temp2\\" + i.ToString() + ".jpg";

                Destin_Image.Save(Image_URLs[i]);

                Source_Image.Dispose();
                Source_Image_Btmp.Dispose();
                Destin_Image.Dispose();
            }

            /*
            try
            {
                System.IO.Directory.Delete(Environment.CurrentDirectory + "\\Temp", true);
            }
            catch
            {
            }
            */

            System.IO.Directory.Delete(Environment.CurrentDirectory + "\\Temp", true);
        }

此处,Temp文件夹已成功删除。

我在从main调用相关函数后尝试调用delete命令;但它仍然没有用!

有人可以帮我解释如何从我创建的进程中分离文件夹吗?

1 个答案:

答案 0 :(得分:1)

发布回答:

for (int i = 0; i < 2; i++)
            {
                using (var image = System.Drawing.Image.FromFile(Image_URLs[i]))
                {
                    GEncoder.AddFrame(image);

                }
            }