diff --git a/src/Gifitti/Gifitti/Models/GifModel.cs b/src/Gifitti/Gifitti/Models/GifModel.cs index 05bbab10253430591d7216cb46c7ca779036a3ac..24d544b683c5862d2271bce2949b7c9c31d84247 100644 --- a/src/Gifitti/Gifitti/Models/GifModel.cs +++ b/src/Gifitti/Gifitti/Models/GifModel.cs @@ -26,6 +26,8 @@ namespace Gifitti.Models private bool reverse; public int startFrame = 0; public int endFrame = 0; + internal int originalDelay; + public int delay { get; set; } = 0; /// <summary> @@ -36,6 +38,10 @@ namespace Gifitti.Models { //Save the original Gif originalGif = Image.FromFile(path); + PropertyItem item = originalGif.GetPropertyItem(0x5100); // FrameDelay in libgdiplus + // Time is in 1/100ths of a second + originalDelay = (item.Value[0] + item.Value[1] * 256) * 10; + delay = originalDelay; this.gifImage = originalGif.Clone() as Image; dimension = new FrameDimension(originalGif.FrameDimensionsList[0]); frameConstruction(originalGif); @@ -186,10 +192,12 @@ namespace Gifitti.Models /// </summary> /// <param name="index">Frame number to fetch</param> /// <returns>Frame number index in the model</returns> - public Image GetFrame(int index) + public Image GetFrame(int index, bool isResize = false) { originalGif.SelectActiveFrame(dimension, index); //find the frame + if(isResize) + return (Image)originalGif.Clone(); return originalGif; //return a copy of it } diff --git a/src/Gifitti/Gifitti/Transformation/TransformGif.cs b/src/Gifitti/Gifitti/Transformation/TransformGif.cs index e7bdf3429f627efada6586c6d41748e6aeac0c4c..8ca45663b5eed226a38537726e1dd9768e191774 100644 --- a/src/Gifitti/Gifitti/Transformation/TransformGif.cs +++ b/src/Gifitti/Gifitti/Transformation/TransformGif.cs @@ -26,10 +26,9 @@ namespace Gifitti.Transformation { for (int i = 0; i < gm.numberOfFrames; i++) { - collection.Add(new MagickImage(gm.GetFrame(i) as Bitmap)); - //collection[i].AnimationDelay = (delay / 8); + collection.Add(new MagickImage(gm.GetFrame(i, true) as Bitmap)); collection[i].Resize(newWidth, newHeight); - gm.SetFrameFromImage(collection[i].ToBitmap(), i); + gm.SetFrameFromImage(collection[i].ToBitmap() as Bitmap, i); } } } @@ -41,8 +40,6 @@ namespace Gifitti.Transformation { collection.Add(new MagickImage(gm.GetFrame(i) as Bitmap)); collection[i].AnimationDelay = (delay/10); - - } //return collection; diff --git a/src/Gifitti/Gifitti/View_Models/MainForm.cs b/src/Gifitti/Gifitti/View_Models/MainForm.cs index 72d87ed29d5af0c98f2aa3e963e615ed94ce5a9b..d357132d22186fa4eb32fd0fba95457590d41d0b 100644 --- a/src/Gifitti/Gifitti/View_Models/MainForm.cs +++ b/src/Gifitti/Gifitti/View_Models/MainForm.cs @@ -289,7 +289,6 @@ namespace Gifitti.View_Models //set the initial frames in textbox textBox1.Text = "0"; textBox2.Text = gm.numberOfFrames.ToString(); - //Transformation.TransformGif.resizeGif(this.gm, 100, 100); //TODO: remove temporarily used for testing } } @@ -314,7 +313,7 @@ namespace Gifitti.View_Models /// <param name="e"> Event arguments associated with this event. </param> private void GifFPSSliderUpdate(object sender, EventArgs e) { - gm.delay = (10-trackBar1.Value)*10; + gm.delay = (11-trackBar1.Value)*gm.originalDelay; } private void MenuItemResize(object sender, EventArgs e) diff --git a/src/Gifitti/Gifitti/View_Models/SaveAsXbyYPrompt.cs b/src/Gifitti/Gifitti/View_Models/SaveAsXbyYPrompt.cs index a2e8e4fc54cb17ac64fa3dd516e8fdebb7404d71..f159d7ff2b7e64f0f4750fd4229c18d6dcba6e8b 100644 --- a/src/Gifitti/Gifitti/View_Models/SaveAsXbyYPrompt.cs +++ b/src/Gifitti/Gifitti/View_Models/SaveAsXbyYPrompt.cs @@ -48,13 +48,15 @@ namespace Gifitti.View_Models Console.WriteLine(path); try { + TransformGif.resizeGif(gm, width, height); gm.saveGif(path); } catch (DirectoryNotFoundException) { + TransformGif.resizeGif(gm, orignalWidth, originalHeight); MessageBox.Show("Save Path Invalid!"); } - TransformGif.resizeGif(gm, orignalWidth, originalHeight); + this.Close(); }