Esempio n. 1
0
        private void Button_Save_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                switch (ImageInfo.Image_Extension.ToUpper())
                {
                case ".JPG":
                case ".JPEG":
                    JpegBitmapEncoder jbe = new JpegBitmapEncoder();
                    ImageProcess.SaveUsingEncoder(BitmapSource, ImageInfo.Image_FullPath, jbe);
                    break;

                case ".PNG":
                    PngBitmapEncoder pbe = new PngBitmapEncoder();
                    ImageProcess.SaveUsingEncoder(BitmapSource, ImageInfo.Image_FullPath, pbe);
                    break;

                case ".GIF":
                    GifBitmapEncoder gbe = new GifBitmapEncoder();
                    ImageProcess.SaveUsingEncoder(BitmapSource, ImageInfo.Image_FullPath, gbe);
                    break;
                }
                MessageBox.Show("儲存成功", "提示", MessageBoxButton.OK);
            }
            catch (Exception ex)
            {
                Error_Log.ErrorMessageOutput(ex.ToString());
                MessageBox.Show("寫入失敗", "提示", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }
Esempio n. 2
0
 /// <summary>
 /// Saves a Gif image to the file system
 /// </summary>
 /// <param name="filename"></param>
 /// <param name="gifEnconder"></param>
 internal static void SaveGif(string filename, GifBitmapEncoder gifEnconder)
 {
     using (FileStream stream = new FileStream(filename, FileMode.Create))
     {
         gifEnconder.Save(stream);
     }
 }
Esempio n. 3
0
        public GifBitmapEncoder GenerateWyMerge(Bitmap bitmap1, Bitmap bitmap2, int frames, int threshold)
        {
            GifBitmapEncoder          gifEncoder     = new GifBitmapEncoder();
            List <Pixel>              pixels1        = new List <Pixel>();
            List <Pixel>              pixels2        = new List <Pixel>();
            Dictionary <Pixel, Pixel> pixelRelations = new Dictionary <Pixel, Pixel>();

            SplitBmpPixels(bitmap1, out pixels1);
            SplitBmpPixels(bitmap2, out pixels2);
            pixelRelations = CreatePixelRelations(pixels1, pixels2, threshold);
            tProgress.Text = "Moving pixels around...";
            for (int f = 0; f <= frames; f++)
            {
                Bitmap newFrame = new Bitmap(bitmap1.Width, bitmap1.Height);
                foreach (KeyValuePair <Pixel, Pixel> relation in pixelRelations)
                {
                    float percFrames = (float)f / frames;
                    System.Drawing.Color lerpedColor = System.Drawing.Color.FromArgb(255, (int)Lerp(relation.Key.c.R, relation.Value.c.R, percFrames), (int)Lerp(relation.Key.c.G, relation.Value.c.G, percFrames), (int)Lerp(relation.Key.c.B, relation.Value.c.B, percFrames));
                    newFrame.SetPixel((int)Lerp(relation.Key.x, relation.Value.x, percFrames), (int)Lerp(relation.Key.y, relation.Value.y, percFrames), lerpedColor);
                }
                gifEncoder.Frames.Add(BitmapFrame.Create(BitmapToBitmapSource(newFrame)));
            }
            tProgress.Text = "Saving WyMerge (" + pixelRelations.Count + " PxR)";
            return(gifEncoder);
        }
Esempio n. 4
0
        public override void Save(Stream stream, ImageFormat format)
        {
            BitmapEncoder encoder;

            if (format.Equals(ImageFormat.Bmp))
            {
                encoder = new BmpBitmapEncoder();
            }
            else if (format.Equals(ImageFormat.Gif))
            {
                encoder = new GifBitmapEncoder();
            }
            else if (format.Equals(ImageFormat.Jpeg))
            {
                encoder = new JpegBitmapEncoder();
            }
            else if (format.Equals(ImageFormat.Png))
            {
                encoder = new PngBitmapEncoder();
            }
            else if (format.Equals(ImageFormat.Tiff))
            {
                encoder = new TiffBitmapEncoder();
            }
            else
            {
                throw new ArgumentOutOfRangeException("format", format, "Unsupported bitmap encoding format");
            }

            encoder.Frames.Add(BitmapFrame.Create((BitmapSource)this));
            encoder.Save(stream);
        }
Esempio n. 5
0
        private void GenerateImage(BitmapSource bitmap, ImageFormat format, Stream destStream)
        {
            BitmapEncoder encoder = null;

            switch (format)
            {
            case ImageFormat.JPG:
                encoder = new JpegBitmapEncoder();
                break;

            case ImageFormat.PNG:
                encoder = new PngBitmapEncoder();
                break;

            case ImageFormat.BMP:
                encoder = new BmpBitmapEncoder();
                break;

            case ImageFormat.GIF:
                encoder = new GifBitmapEncoder();
                break;

            case ImageFormat.TIF:
                encoder = new TiffBitmapEncoder();
                break;

            default:
                throw new InvalidOperationException();
            }

            encoder.Frames.Add(BitmapFrame.Create(bitmap));
            encoder.Save(destStream);
        }
Esempio n. 6
0
        public static BitmapEncoder CreateBitmapEncoder(BitmapEncodingMode mode)
        {
            BitmapEncoder e = null;

            switch (mode)
            {
            case BitmapEncodingMode.Bmp:
                e = new BmpBitmapEncoder();
                break;

            case BitmapEncodingMode.Gif:
                e = new GifBitmapEncoder();
                break;

            case BitmapEncodingMode.Jpeg:
                e = new JpegBitmapEncoder();
                break;

            case BitmapEncodingMode.Png:
                e = new PngBitmapEncoder();
                break;

            case BitmapEncodingMode.Tiff:
                e = new TiffBitmapEncoder();
                break;

            case BitmapEncodingMode.Wmp:
                e = new WmpBitmapEncoder();
                break;
            }

            return(e);
        }
Esempio n. 7
0
        public GifBitmapEncoder getGif()
        {
            coordProvider.Reset();

            GifBitmapEncoder gEnc = new GifBitmapEncoder();

            Bitmap target = new Bitmap((int)rect.Width, (int)rect.Height);

            using (Graphics g = Graphics.FromImage(target))
            {
                g.FillRectangle(Brushes.Black, 0, 0, 800, 450);
            }

            while (coordProvider.MoveNext())
            {
                using (Graphics g = Graphics.FromImage(target))
                {
                    g.DrawRectangle(Pens.Turquoise, new Rectangle((int)(coordProvider.Current.X), (int)coordProvider.Current.Y, 1, 1));
                }

                var bmp = target.GetHbitmap();
                var src = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
                    bmp,
                    IntPtr.Zero,
                    Int32Rect.Empty,
                    BitmapSizeOptions.FromEmptyOptions());
                gEnc.Frames.Add(BitmapFrame.Create(src));

                Utility.NativeMethods.DeleteObject(bmp); // recommended, handle memory leak
            }


            return(gEnc);
        }
Esempio n. 8
0
        private void saveMerged_Button_Click(object sender, RoutedEventArgs e)
        {
            SaveFileDialog dialog = new SaveFileDialog()
            {
                DefaultExt = ".bmp",
                Filter     = "Pliki graficzne|*.bmp; *.png; *.jpg; *.gif; *.jpeg"
            };

            if (dialog.ShowDialog() == true)
            {
                BitmapEncoder encoder = new BmpBitmapEncoder();
                var           ext     = Path.GetExtension(dialog.FileName);
                if (ext == ".png")
                {
                    encoder = new PngBitmapEncoder();
                }
                else if (ext == ".jpg" || ext == ".jpeg")
                {
                    encoder = new JpegBitmapEncoder();
                }
                else if (ext == ".gif")
                {
                    encoder = new GifBitmapEncoder();
                }
                encoder.Frames.Add(BitmapFrame.Create(BitmapToImageSource(bitmapToBeMerged)));
                using (var fileStream = new System.IO.FileStream(dialog.FileName, System.IO.FileMode.Create))
                {
                    encoder.Save(fileStream);
                }
            }
        }
Esempio n. 9
0
        /// <summary>
        /// Writes each layer out to an animated GIF file
        /// </summary>
        /// <param name="strFilePath">Output file name</param>
        /// <returns>True if successful, False if error</returns>
        public Boolean WriteToGif(String strFilePath)
        {
            List <Bitmap> images      = new List <Bitmap>();
            int           nLayerCount = GetLayerCount();

            for (int nLayer = 0; nLayer < nLayerCount; nLayer++)
            {
                Bitmap bitmap = new Bitmap(Convert.ToInt32(m_dWidth), Convert.ToInt32(m_dHeight), System.Drawing.Imaging.PixelFormat.Format32bppArgb);
                images.Add(bitmap);
                Graphics   g     = Graphics.FromImage(bitmap);
                Rectangle  rRect = new Rectangle(0, 0, (int)m_dWidth, (int)m_dHeight);
                SolidBrush brush = new SolidBrush(Color.White);
                g.FillRectangle(brush, rRect);
                SelectLayer(nLayer);
                Draw(1, g, 0, 0);
                brush.Dispose();
            }
            System.Windows.Media.Imaging.GifBitmapEncoder gEnc = new GifBitmapEncoder();
            foreach (System.Drawing.Bitmap bmpImage in images)
            {
                var bmp = bmpImage.GetHbitmap();
                var src = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
                    bmp,
                    IntPtr.Zero,
                    Int32Rect.Empty,
                    BitmapSizeOptions.FromEmptyOptions());
                gEnc.Frames.Add(BitmapFrame.Create(src));
            }
            using (FileStream fs = new FileStream(strFilePath, FileMode.Create))
            {
                gEnc.Save(fs);
            }
            return(true);
        }
Esempio n. 10
0
        private void ZapiszGIF(object sender, RoutedEventArgs e)
        {
            SaveFileDialog saveFileDialog = new SaveFileDialog();

            saveFileDialog.FileName = "ImageGIF";
            saveFileDialog.Filter   = "GIF (*.gif)|*.gif";
            if (saveFileDialog.ShowDialog() == true)
            {
                try
                {
                    var         encoder = new GifBitmapEncoder();
                    BitmapImage obr     = new BitmapImage();

                    encoder.Frames.Add(BitmapFrame.Create((BitmapSource)obrazek.Source));
                    using (var stream = saveFileDialog.OpenFile())
                    {
                        encoder.Save(stream);
                    }
                }
                catch (Exception eeee)
                {
                    MessageBox.Show(eeee.Message);
                    MessageBox.Show("Błąd przy zapisie!", "Zapis do pliku", MessageBoxButton.OK, MessageBoxImage.Warning);
                }
            }
        }
Esempio n. 11
0
        private void SaveAsGif_Click(object sender, RoutedEventArgs e)
        {
            SaveFileDialog _sfd = new SaveFileDialog();

            _sfd.Title  = "Save Game As GIF.";
            _sfd.Filter = "GIF Files (*.gif) | *.gif";

            if (_sfd.ShowDialog() == true)
            {
                using (FileStream _fs = new FileStream(_sfd.FileName, FileMode.Create, FileAccess.Write))
                {
                    try
                    {
                        _encoder.Save(_fs);
                    }
                    catch (Exception _exc)
                    {
                        this.ViewModel.ErrorString = _exc.Message;
                    }
                    _fs.Flush();
                    _fs.Close();
                }
            }

            _encoder = new GifBitmapEncoder();
        }
Esempio n. 12
0
        public static byte[] SaveToBytes(this BitmapSource image, ImageType saveType = ImageType.Png)
        {
            BitmapEncoder encoder;

            switch (saveType)
            {
            case ImageType.Gif:
                encoder = new GifBitmapEncoder();
                break;

            case ImageType.Jpg:
                encoder = new JpegBitmapEncoder();
                break;

            case ImageType.Tiff:
                encoder = new TiffBitmapEncoder();
                break;

            default:
                // default: use PNG format
                encoder = new PngBitmapEncoder();
                break;
            }
            encoder.Frames.Add(BitmapFrame.Create(image));
            using (var ms = new MemoryStream())
            {
                encoder.Save(ms);
                return(ms.ToArray());
            }
        }
Esempio n. 13
0
        public static void GenerateImage(BitmapSource bitmap, string lowerExtension, Stream destStream)
        {
            /*
             * 参考资料:
             * [在WPF程序中将控件所呈现的内容保存成图像]
             * (http://www.cnblogs.com/TianFang/archive/2012/10/07/2714140.html)
             * [Rendering a WPF Container to Bitmap]
             * (http://weblog.west-wind.com/posts/2007/Sep/10/Rendering-a-WPF-Container-to-Bitmap)
             */
            BitmapEncoder encoder = null;

            switch (lowerExtension)
            {
            case ".jpg":    { encoder = new JpegBitmapEncoder(); break; }

            case ".png":    { encoder = new PngBitmapEncoder();  break; }

            case ".bmp":    { encoder = new BmpBitmapEncoder();  break; }

            case ".gif":    { encoder = new GifBitmapEncoder();  break; }

            case ".tif":    { encoder = new TiffBitmapEncoder(); break; }

            default:        { encoder = new BmpBitmapEncoder();  break; }
            }
            encoder.Frames.Add(BitmapFrame.Create(bitmap));
            encoder.Save(destStream);
        }
Esempio n. 14
0
        /// <summary>
        /// 儲存 BitmapIimage 影像
        /// </summary>
        /// <param name="bitmapSource">BitmapSource資料來源</param>
        /// <param name="fileName">儲存路徑</param>
        /// <param name="encoder">編碼</param>
        public static void SaveUsingEncoder(BitmapSource bitmapSource, string fileName, string extension)
        {
            using (var stream = File.Create(fileName))
            {
                BitmapEncoder encoder;
                switch (extension.ToUpper())
                {
                case ".JPG":
                case ".JPEG":
                    encoder = new JpegBitmapEncoder();
                    encoder.Frames.Add(BitmapFrame.Create(bitmapSource));
                    encoder.Save(stream);
                    break;

                case ".PNG":
                    encoder = new PngBitmapEncoder();
                    encoder.Frames.Add(BitmapFrame.Create(bitmapSource));
                    encoder.Save(stream);
                    break;

                case ".GIF":
                    encoder = new GifBitmapEncoder();
                    encoder.Frames.Add(BitmapFrame.Create(bitmapSource));
                    encoder.Save(stream);
                    break;
                }
            }
        }
Esempio n. 15
0
        private static void GifCoderTest()
        {
            var _gifFileName = "F_LAW.gif";

            var _input = new FileStream(_gifFileName, FileMode.Open);

            var _gifCoder = new GifBitmapCoder();

            _gifCoder.Load(_input);
            _input.Close();

            for (int i = 0; i < _gifCoder.Frames.Count; i++)
            {
                var _output  = String.Format(@"result\{0}{1:d3}.gif", Path.GetFileNameWithoutExtension(_gifFileName), i);
                var _encoder = new GifBitmapEncoder();
                _encoder.Frames.Add(_gifCoder.Frames[i].Frame);

                using (var _fs = new FileStream(_output, FileMode.Create))
                {
                    _encoder.Save(_fs);
                }
            }

            var _output1 = new FileStream("output.gif", FileMode.Create);

            _gifCoder.Save(_output1);
            _output1.Close();
        }
        private static BitmapEncoder GetBitmapEncoder(string imageContentType)
        {
            BitmapEncoder bitmapEncoder;

            switch (imageContentType)
            {
            case ImageBmpContentType:
                bitmapEncoder = new BmpBitmapEncoder();
                break;

            case ImageGifContentType:
                bitmapEncoder = new GifBitmapEncoder();
                break;

            case ImageJpegContentType:
                bitmapEncoder = new JpegBitmapEncoder();
                //

                break;

            case ImageTiffContentType:
                bitmapEncoder = new TiffBitmapEncoder();
                break;

            case ImagePngContentType:
                bitmapEncoder = new PngBitmapEncoder();
                break;

            default:
                bitmapEncoder = null;
                break;
            }
            return(bitmapEncoder);
        }
Esempio n. 17
0
        public static void CaptureOutGifAnimation(
            string path,
            MediaPlayer player,
            double startSeconds             = 0,
            double waitSeconds              = 0.1,
            int count                       = 10,
            double maxWidth                 = 640,
            CRGBA3x3FilteringProc filtering = null,
            int dpi = Image.DEFAULT_dpi)
        {
            if (player is null)
            {
                return;
            }

            // 読み込みが完了するまで待機
            waitMediaSetup(player);

            int width, height;

            // リサイズ後のサイズを計算
            calcRectSize(player, maxWidth, out width, out height);

            double volume = player.Volume;

            player.Volume = 0;

            var gEnc = new GifBitmapEncoder();

            for (int i = 0; i < count; ++i)
            {
                // 指定位置へシーク
                double pos = startSeconds + (double)i * waitSeconds;
                player.Position = TimeSpan.FromSeconds(pos);
                player.Pause();

                // 読み込みが完了するまで待機
                waitMediaSetup(player, pos);

                var renderTarget = new RenderTargetBitmap(width, height, dpi, dpi, PixelFormats.Pbgra32);

                capture(
                    renderTarget,
                    player,
                    width,
                    height,
                    filtering,
                    dpi
                    );

                gEnc.Frames.Add(BitmapFrame.Create(renderTarget));
            }

            player.Volume = volume;

            using (FileStream fs = new FileStream(path, FileMode.Create))
            {
                gEnc.Save(fs);
            }
        }
Esempio n. 18
0
        /// <summary>
        /// 将图片保存到文件
        /// </summary>
        /// <param name="bitmap">BitmapSource</param>
        /// <param name="format">图像类型</param>
        /// <param name="fileName">保存文件名</param>
        public static void ImageToFile(BitmapSource bitmap, ImageFormat format, string fileName)
        {
            BitmapEncoder encoder;

            switch (format)
            {
            case ImageFormat.JPG:
                encoder = new JpegBitmapEncoder();
                break;

            case ImageFormat.PNG:
                encoder = new PngBitmapEncoder();
                break;

            case ImageFormat.BMP:
                encoder = new BmpBitmapEncoder();
                break;

            case ImageFormat.GIF:
                encoder = new GifBitmapEncoder();
                break;

            default:
                throw new InvalidOperationException();
            }

            FileStream fs = new FileStream(fileName, FileMode.Create);

            encoder.Frames.Add(BitmapFrame.Create(bitmap));
            encoder.Save(fs);
            fs.Dispose();
            fs.Close();
        }
Esempio n. 19
0
        public static string saveAs_Gif(this Image image, string pathToSaveImage)
        {
            return((string)image.wpfInvoke(
                       () =>
            {
                try
                {
                    using (FileStream outStream = new FileStream(pathToSaveImage, FileMode.Create))
                    {
                        var gifBitmapEncoder = new GifBitmapEncoder();
                        gifBitmapEncoder.Frames.Add(BitmapFrame.Create((BitmapImage)image.Source));        //BitmapFrame.Create(image));

                        gifBitmapEncoder.Save(outStream);
                    }
                }
                catch (Exception ex)
                {
                    ex.log("in WPF Image saveas_Gif");
                }
                if (pathToSaveImage.fileExists())
                {
                    return pathToSaveImage;
                }
                return "";
            }));
        }
        /// <summary>
        ///     获取影像的编码格式
        ///     <param name="filePath">文件路径</param>
        /// </summary>
        //--------------------------------------------------------------------------
        //修改历史:
        //日期      修改人     修改
        //2010-8-5  qizhenguo  创建代码
        //--------------------------------------------------------------------------
        private BitmapEncoder GetEncoder(string filePath)
        {
            BitmapEncoder encoder = new JpegBitmapEncoder();
            string        ext     = Path.GetExtension(filePath);

            switch (ext)
            {
            case "jpg":
            case "jpeg":
                encoder = new JpegBitmapEncoder();
                break;

            case "bmp":
                encoder = new BmpBitmapEncoder();
                break;

            case "tiff":
            case "tif":
                encoder = new TiffBitmapEncoder();
                break;

            case "png":
                encoder = new PngBitmapEncoder();
                break;

            case "gif":
                encoder = new GifBitmapEncoder();
                break;

            default:
                break;
            }
            return(encoder);
        }
Esempio n. 21
0
        /// <summary>
        /// 保存图像
        /// </summary>
        /// <param name="savePath">图像保存路径</param>
        /// <param name="BS">控件源</param>
        /// <param name="extName">文件拓展名</param>
        public static void SaveImage(string savePath, BitmapSource BS, string extName)
        {
            BitmapEncoder encoder = null;

            switch (extName)
            {
            case ".png":
                encoder = new PngBitmapEncoder();
                break;

            case ".jpg":
                encoder = new JpegBitmapEncoder();
                break;

            case ".bmp":
                encoder = new BmpBitmapEncoder();
                break;

            case ".gif":
                encoder = new GifBitmapEncoder();
                break;

            case ".tiff":
                encoder = new TiffBitmapEncoder();
                break;

            default:
                throw new InvalidOperationException();
            }
            encoder.Frames.Add(BitmapFrame.Create(BS));
            encoder.Save(File.Create(savePath));
        }
Esempio n. 22
0
        private void RecordGif(int frames, int interval)
        {
            _gifBitmapEncoder = new GifBitmapEncoder();

            for (var i = 0; i < frames; i++)
            {
                _capture.CaptureScreen();
                Thread.Sleep(interval);
            }

            _path = new RelativeFile
            {
                SubDirectory         = "Animations",
                Name                 = "GifRecording",
                Extension            = ".gif",
                TimeStampFile        = true,
                UseDetailedTimeStamp = true
            };

            using (var filestream = new FileStream(_path.GetFullPath(), FileMode.Create))
            {
                _gifBitmapEncoder.Save(filestream);
            }

            _gifBitmapEncoder = null;
        }
Esempio n. 23
0
        public void SaveToFile(string path, ImageFileType type, double dpiX = 96.0, double dpiY = 96.0)
        {
            var bitmapSource = CaptureScreen(this.Content, dpiX, dpiY);

            BitmapEncoder encoder = null;

            switch (type)
            {
            case ImageFileType.BMP:
                encoder = new PngBitmapEncoder();
                break;

            case ImageFileType.GIF:
                encoder = new GifBitmapEncoder();
                break;

            case ImageFileType.JPEG:
                encoder = new JpegBitmapEncoder();
                break;

            case ImageFileType.PNG:
                encoder = new PngBitmapEncoder();
                break;
            }

            SaveBitmapSource(bitmapSource, encoder, path);
        }
Esempio n. 24
0
        //This method takes in a list of imagedata found in the database, creates a new gifbitmapencoder and puts the images into the newly formed gif.
        public GifBitmapEncoder Create(IEnumerable <ImageData> listOFImages, int frameRate = 2)
        {
            JpegBitmapDecoder decoder;
            BitmapSource      convertToBmp;
            GifBitmapEncoder  newGif = new GifBitmapEncoder();


            //Run through the list of ImageData from the database
            foreach (BlueMarble.Data.ImageData indImage in listOFImages)
            {
                //Get the image based off of the url found on the data of the image
                var request = WebRequest.Create(indImage.Lowresurl);

                using (var response = request.GetResponse())
                    using (var webstream = response.GetResponseStream())
                    {
                        decoder      = new JpegBitmapDecoder(webstream, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
                        convertToBmp = decoder.Frames[0];

                        //The amount of times you store the image in the in the gif, the slower it appears to transition, default for this speed is 2
                        for (int x = 0; x < frameRate; x++)
                        {
                            newGif.Frames.Add(BitmapFrame.Create(convertToBmp));
                        }
                    }
            }

            return(newGif);
        }
Esempio n. 25
0
        private void InitializeBitmapEncoder()
        {
            switch (EncodingFormat)
            {
            case BitmapEncoding.BMP:
                Encoder = new BmpBitmapEncoder();
                break;

            case BitmapEncoding.GIF:
                Encoder = new GifBitmapEncoder();
                break;

            case BitmapEncoding.JPEG:
                Encoder = new JpegBitmapEncoder();
                break;

            case BitmapEncoding.PNG:
                Encoder = new PngBitmapEncoder();
                break;

            case BitmapEncoding.TIFF:
                Encoder = new TiffBitmapEncoder();
                break;

            case BitmapEncoding.WMP:
                Encoder = new WmpBitmapEncoder();
                break;
            }
        }
Esempio n. 26
0
        /// <summary>
        /// 将指定位图保存到指定路径中
        /// </summary>
        /// <param name="bitmap">要保存的位图</param>
        /// <param name="path">要保存到的路径(包含文件名和扩展卡名)</param>
        public static void Save(BitmapSource bitmap, string path)
        {
            BitmapEncoder encoder       = null;
            string        fileExtension = System.IO.Path.GetExtension(path).ToUpper();

            //选取编码器
            switch (fileExtension)
            {
            case ".BMP":
                encoder = new BmpBitmapEncoder();
                break;

            case ".GIF":
                encoder = new GifBitmapEncoder();
                break;

            case ".JPEG":
                encoder = new JpegBitmapEncoder();
                break;

            case ".PNG":
                encoder = new PngBitmapEncoder();
                break;

            case ".TIFF":
                encoder = new TiffBitmapEncoder();
                break;

            default:
                throw new Exception("无法识别的图像格式!");
            }
            encoder.Frames.Add(BitmapFrame.Create(bitmap));
            using (var file = File.Create(path))
                encoder.Save(file);
        }
Esempio n. 27
0
        public static BitmapEncoder CreateEncoder(BitmapEncoderType encoderType, BitmapSource bitmapSource)
        {
            BitmapEncoder bitmapEncoder;

            switch (encoderType)
            {
            case BitmapEncoderType.BMP:
                bitmapEncoder = new BmpBitmapEncoder();
                break;

            case BitmapEncoderType.GIF:
                bitmapEncoder = new GifBitmapEncoder();
                break;

            case BitmapEncoderType.PNG:
                bitmapEncoder = new PngBitmapEncoder();
                break;

            case BitmapEncoderType.TIFF:
                bitmapEncoder = new TiffBitmapEncoder();
                break;

            case BitmapEncoderType.WMP:
                bitmapEncoder = new WmpBitmapEncoder();
                break;

            default:
                bitmapEncoder = new JpegBitmapEncoder();
                break;
            }

            bitmapEncoder.Frames.Add(BitmapFrame.Create(bitmapSource));
            return(bitmapEncoder);
        }
        public ScreenshotTakenEventArgs(BitmapSource bitmap, ImageFormat format = null)
        {
            if (format == null)
            {
                format = ImageFormat.Png;
            }
            BitmapEncoder encoder = new PngBitmapEncoder();

            if (format.Equals(ImageFormat.Bmp))
            {
                encoder = new BmpBitmapEncoder();
            }
            if (format.Equals(ImageFormat.Gif))
            {
                encoder = new GifBitmapEncoder();
            }
            if (format.Equals(ImageFormat.Jpeg))
            {
                encoder = new JpegBitmapEncoder();
            }
            if (format.Equals(ImageFormat.Tiff))
            {
                encoder = new TiffBitmapEncoder();
            }
            encoder.Frames.Add(BitmapFrame.Create(bitmap));
            var memoryStream = new MemoryStream();

            encoder.Save(memoryStream);
            ImageData      = memoryStream;
            ImageExtension = encoder.CodecInfo.FileExtensions.Split(',')[0]; // First extension. Usually the best. But it doesn't matter much. Yes.
        }
Esempio n. 29
0
 private void bGenerate_Click(object sender, EventArgs e)
 {
     if (bmp1 != null && bmp2 != null)
     {
         if (bmp1.Width == bmp2.Width && bmp1.Height == bmp2.Height)
         {
             if (bmp1.PixelFormat == System.Drawing.Imaging.PixelFormat.Format24bppRgb && bmp2.PixelFormat == System.Drawing.Imaging.PixelFormat.Format24bppRgb)
             {
                 tProgress.Text = "Gathering frames...";
                 GifBitmapEncoder generatedWyMerge = GenerateWyMerge(bmp1, bmp2, tbFrames.Value, tbThreshold.Value);
                 SaveFileDialog   sfd = new SaveFileDialog();
                 sfd.Filter = "GIF Image (*.gif)|*.gif";
                 sfd.Title  = "Save " + generatedWyMerge.Frames.Count + " frame WyMerge";
                 if (sfd.ShowDialog() == DialogResult.OK)
                 {
                     FileStream stream = (FileStream)sfd.OpenFile();
                     generatedWyMerge.Save(stream);
                     stream.Close();
                 }
             }
             else
             {
                 MessageBox.Show("WyMerge currently only supports 24-bit RGB bitmaps.\n\nBitmap 1: " + bmp1.PixelFormat.ToString() + "\nBitmap 2: " + bmp2.PixelFormat.ToString(), "Whoops...");
             }
         }
         else
         {
             MessageBox.Show("Both bitmaps need to be the same dimensions, else the WyMerge can\'t generate!\n\nBitmap 1: " + bmp1.Width + " x " + bmp1.Height + "\nBitmap 2: " + bmp2.Width + " x " + bmp2.Height, "Whoops...");
         }
     }
     else
     {
         MessageBox.Show("Both bitmaps need to be loaded before generating a WyMerge!", "Whoops...");
     }
 }
        private void OnExportMovie()
        {
            var saveDialog = new SaveFileDialog()
            {
                Filter          = "Gif Files|*.gif",
                AddExtension    = true,
                OverwritePrompt = true,
                ValidateNames   = true
            };

            if (saveDialog.ShowDialog() == true)
            {
                var frames = new List <WriteableBitmap>(this.Frames);
                var path   = saveDialog.FileName;

                ThreadPool.QueueUserWorkItem(_ =>
                {
                    var encoder = new GifBitmapEncoder();

                    foreach (var frame in frames)
                    {
                        var bitmapFrame = BitmapFrame.Create(frame);
                        encoder.Frames.Add(bitmapFrame);
                    }

                    using (var file = File.OpenWrite(path))
                    {
                        encoder.Save(file);
                    }
                });
            }
        }