Beispiel #1
0
        public MemoryStream GenerateImage(Visual vsual, int widhth, int height, ImageFormat format)
        {
            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;

            }

            if (encoder == null) return null;

            RenderTargetBitmap rtb = this.RenderVisaulToBitmap(vsual, widhth, height);
            MemoryStream file = new MemoryStream();
            encoder.Frames.Add(BitmapFrame.Create(rtb));
            encoder.Save(file);

            return file;
        }
 public void Save(BitmapSource bmSource)
 {
     BitmapEncoder encoder;
     switch (Path.GetExtension(_path).ToLower())
     {
         case ".jpg":
         case ".jpeg":
             encoder = new JpegBitmapEncoder();
             break;
         case ".gif":
             encoder = new GifBitmapEncoder();
             break;
         case ".bmp":
             encoder = new BmpBitmapEncoder();
             break;
         case ".tif":
         case ".tiff":
             encoder = new TiffBitmapEncoder();
             break;
         case ".png":
             encoder = new PngBitmapEncoder();
             break;
         default:
             throw new ArgumentException("Wrong path");
     }
     encoder.Frames.Add(BitmapFrame.Create(bmSource));
     Stream stm = File.Create(_path);
     encoder.Save(stm);
     stm.Dispose();
 }
Beispiel #3
0
    /// custom
    private static void createGif(IEnumerable <Bitmap> bitmaps, string path)
    {
        var gifEnc = new Media.Imaging.GifBitmapEncoder();

        foreach (var bmp in bitmaps)
        {
            var src = Interop.Imaging.CreateBitmapSourceFromHBitmap(
                bmp.GetHbitmap(),
                IntPtr.Zero,
                Int32Rect.Empty,
                Media.Imaging.BitmapSizeOptions.FromEmptyOptions()
                );
            var emptyBmp = new Bitmap(bmp.Width, bmp.Height);

            /*
             * Graphics g = Graphics.FromImage(emptyBmp);
             * g.FillRectangle(new SolidBrush(Color.White), 0, 0, bmp.Width, bmp.Height);
             * g.Dispose();
             *
             * var emptyFrame = Interop.Imaging.CreateBitmapSourceFromHBitmap(
             *             emptyBmp.GetHbitmap(),
             *             IntPtr.Zero,
             *             Int32Rect.Empty,
             *             Media.Imaging.BitmapSizeOptions.FromEmptyOptions()
             *             );
             * gifEnc.Frames.Add(Media.Imaging.BitmapFrame.Create(src));
             */
        }
        using (var fs = new FileStream(path, FileMode.Create))
        {
            gifEnc.Save(fs);
        }
    }
        public void Write(BitmapSource i, Stream s)
        {
            BitmapEncoder encoder = null;

            if (MimeType.Equals("image/jpeg"))
            {
                encoder = new JpegBitmapEncoder();
                ((JpegBitmapEncoder)encoder).QualityLevel = localSettings.Quality;
            }
            else if (MimeType.Equals("image/png"))
            {
                encoder = new PngBitmapEncoder();
            }
            else if (MimeType.Equals("image/gif"))
            {
                encoder = new GifBitmapEncoder();
                encoder.Palette = new BitmapPalette(i, 256);
            }

            encoder.Frames.Add(BitmapFrame.Create(i));

            using (MemoryStream outputStream = new MemoryStream())
            {
                encoder.Save(outputStream);
                outputStream.WriteTo(s);
            }
        }
Beispiel #5
0
    //custom
    public Image CreateAnimation(Control ctl, List <Image> frames, int delay)
    {
        var gifEnc = new Media.Imaging.GifBitmapEncoder();
        var ms     = new System.IO.MemoryStream();
        var codec  = ImageCodecInfo.GetImageEncoders().First(i => i.MimeType == "image/tiff");

        EncoderParameters encoderParameters = new EncoderParameters(2);

        encoderParameters.Param[0] = new EncoderParameter(Encoder.SaveFlag, (long)EncoderValue.MultiFrame);
        encoderParameters.Param[1] = new EncoderParameter(Encoder.Quality, (long)EncoderValue.CompressionLZW);
        frames[0].Save(ms, codec, encoderParameters);

        encoderParameters          = new EncoderParameters(1);
        encoderParameters.Param[0] = new EncoderParameter(Encoder.SaveFlag, (long)EncoderValue.FrameDimensionPage);
        for (int i = 1; i < frames.Count; i++)
        {
            frames[0].SaveAdd(frames[i], encoderParameters);
        }
        encoderParameters.Param[0] = new EncoderParameter(Encoder.SaveFlag, (long)EncoderValue.Flush);
        frames[0].SaveAdd(encoderParameters);

        ms.Position = 0;
        var img = Image.FromStream(ms);

        Animate(ctl, img, delay, frames.Count);
        return(img);
    }
        public void A()
        {
            int width = 128;
            int height = width;
            int stride = width / 8;
            byte[] pixels = new byte[height * stride];

            BitmapPalette myPalette = BitmapPalettes.WebPalette;

            BitmapSource image = BitmapSource.Create(
                width,
                height,
                96,
                96,
                PixelFormats.Indexed1,
                myPalette,
                pixels,
                stride);

            BitmapSource A = BitmapConverter.GetBitmapSource(Properties.Resources._1);
            BitmapSource B = BitmapConverter.GetBitmapSource(Properties.Resources._2);

            FileStream stream = new FileStream("new.gif", FileMode.Create);
            GifBitmapEncoder encoder = new GifBitmapEncoder();
            encoder.Frames.Add(BitmapFrame.Create(A));
            encoder.Frames.Add(BitmapFrame.Create(B));
            encoder.Save(stream);
        }
Beispiel #7
0
        private static void SaveBitmap(BitmapSource bitmap, string destination)
        {
            BitmapEncoder encoder;

            switch (Path.GetExtension(destination).ToUpperInvariant())
            {
                case ".BMP":
                    encoder = new BmpBitmapEncoder();
                    break;

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

                case ".JPG":
                    encoder = new JpegBitmapEncoder() { QualityLevel = 100 };
                    break;

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

                case ".TIF":
                    encoder = new TiffBitmapEncoder() { Compression = TiffCompressOption.Zip };
                    break;

                default:
                    throw new NotSupportedException("Not supported output extension.");
            }

            encoder.Frames.Add(BitmapFrame.Create(bitmap));
            encoder.Save(new FileStream(destination, FileMode.Create));
        }
        public static Tuple<BitmapSource, byte[]> Convert(this IEnumerable<PointFrame> cloud, int width, int height)
        {
            var bytes = new byte[cloud.Count() * (PixelFormats.Bgr32.BitsPerPixel / 8)];
            byte[] result;
            var index = 0;
            foreach (var point in cloud)
            {
                bytes[index++] = (byte)point.B; // Blue
                bytes[index++] = (byte)point.G; // Green
                bytes[index++] = (byte)point.R; // Red
            }

            var source = BitmapSource.Create(width, height, 96, 96, PixelFormats.Rgb24, BitmapPalettes.Gray16, bytes, width * PixelFormats.Rgb24.BitsPerPixel / 8);
            var encoder = new GifBitmapEncoder();

            using (var stream = new MemoryStream())
            {
                encoder.Frames.Add(BitmapFrame.Create(source));
                encoder.Save(stream);

                result = stream.ToArray().Select(s => (byte)(sbyte)s).ToArray();
                stream.Close();
            }

            return Tuple.Create(source, result);
        }
Beispiel #9
0
        public void Save(Stream stream, ImageFormat format)
        {
            ApplicationHandler.InvokeIfNecessary(() =>
            {
                swm.Imaging.BitmapEncoder encoder;
                switch (format)
                {
                case ImageFormat.Png:
                    encoder = new swm.Imaging.PngBitmapEncoder();
                    break;

                case ImageFormat.Gif:
                    encoder = new swm.Imaging.GifBitmapEncoder();
                    break;

                case ImageFormat.Bitmap:
                    encoder = new swm.Imaging.BmpBitmapEncoder();
                    break;

                case ImageFormat.Jpeg:
                    encoder = new swm.Imaging.JpegBitmapEncoder();
                    break;

                case ImageFormat.Tiff:
                    encoder = new swm.Imaging.TiffBitmapEncoder();
                    break;

                default:
                    throw new NotSupportedException();
                }
                encoder.Frames.Add(swmi.BitmapFrame.Create(Control));
                encoder.Save(stream);
            });
        }
        /// <summary>
        /// Saves the full chart to a file, including technical analysis.
        /// </summary>
        /// <param name="filename">The file to write to.</param>
        public void SaveAsImage(string filename)
        {
            if (string.IsNullOrEmpty(filename))
                throw new ArgumentNullException();

            var extension = Path.GetExtension(filename);
            if (string.IsNullOrEmpty(extension))
                throw new ArgumentNullException();

            BitmapEncoder bitmapEncoder;
            extension = extension.ToLower();
            if (extension == ".png")
                bitmapEncoder = new PngBitmapEncoder();
            else if (extension == ".jpg" || extension == ".jpeg")
                bitmapEncoder = new JpegBitmapEncoder();
            else if (extension == ".gif")
                bitmapEncoder = new GifBitmapEncoder();
            else if (extension == ".bmp")
                bitmapEncoder = new BmpBitmapEncoder();
            else throw new ArgumentException("Cannot find a BitmapEncoder for this file type.");

            var renderTargetBitmap = new RenderTargetBitmap((int)this.ActualWidth, (int)this.ActualHeight, 96, 96, PixelFormats.Pbgra32);

            foreach (var child in LogicalTreeHelper.GetChildren(this))
            {
                if (child is ChartPanel)
                    renderTargetBitmap.Render((ChartPanel)child);
            }

            bitmapEncoder.Frames.Add(BitmapFrame.Create(renderTargetBitmap));
            using (Stream stream = File.Create(filename))
            {
                bitmapEncoder.Save(stream);
            }
        }
Beispiel #11
0
        static void Main()
        {
            #region License

            RuntimeManager.Bind(ProductCode.EngineOrDesktop);
            var ao = new AoInitialize();
            var code = new[] { 60, 50, 40, 10 }.Cast<esriLicenseProductCode>().First(c => ao.IsProductCodeAvailable(c) == esriLicenseStatus.esriLicenseAvailable);
            ao.Initialize(code);

            #endregion

            var grid = new Grid("ascii.txt", true);
            var fileName = "GospersGliderGun.gif";
            var iteration = 100;

            var encoder = new GifBitmapEncoder();

            for (var i = 0; i < iteration; i++)
            {
                Console.WriteLine($"Processing {i + 1} of {iteration}...");
                var tempFileName = $@"{Path.GetTempPath()}\{Guid.NewGuid()}.png";
                Resample(200 * grid, 0.1).Save(tempFileName);
                encoder.Frames.Add(BitmapFrame.Create(new Uri(tempFileName)));
                grid = Tick(grid);
            }

            using (var s = new System.IO.FileStream(fileName, FileMode.Create))
                encoder.Save(s);

            Process.Start(fileName);
        }
 public static void ToImageFile(this Visual theVisual, string fileName)
 {
     BitmapEncoder encoder;
     switch (Path.GetExtension(fileName).ToLower())
     {
         case ".jpg":
         case ".jpeg":
             encoder = new JpegBitmapEncoder();
             break;
         case ".png":
             encoder = new PngBitmapEncoder();
             break;
         case ".bmp":
             encoder = new BmpBitmapEncoder();
             break;
         case ".gif":
             encoder = new GifBitmapEncoder();
             break;
         case ".tiff":
             encoder = new TiffBitmapEncoder();
             break;
         default:
             throw new EncoderFallbackException("The Specified Filename is not a known image type.  Supported image formats are jpeg, png, bmp, gif, and tiff.");
     }
     encoder.Frames.Add(BitmapFrame.Create(theVisual.ToBitmapSource()));
     using (var stream = new FileStream(fileName, FileMode.Create)) encoder.Save(stream);
 }
Beispiel #13
0
        private static BitmapEncoder GetBitmapEncoder(ImageContentType imageContentType)
        {
            BitmapEncoder bitmapEncoder;

            switch (imageContentType)
            {
                case ImageContentType.ImageBmpContentType:
                    bitmapEncoder = new BmpBitmapEncoder();
                    break;
                case ImageContentType.ImageGifContentType:
                    bitmapEncoder = new GifBitmapEncoder();
                    break;
                case ImageContentType.ImageJpegContentType:
                    bitmapEncoder = new JpegBitmapEncoder();
                    break;
                case ImageContentType.ImageTiffContentType:
                    bitmapEncoder = new TiffBitmapEncoder();
                    break;
                case ImageContentType.ImagePngContentType:
                    bitmapEncoder = new PngBitmapEncoder();
                    break;
                default:
                    bitmapEncoder = new PngBitmapEncoder();
                    break;
            }
            return bitmapEncoder;
        }
Beispiel #14
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;
        }
    private void Button_Click(object sender, RoutedEventArgs e)
    {
      RenderTargetBitmap bmp = new RenderTargetBitmap((int)100, (int)100, 96, 96, PixelFormats.Pbgra32);
      bmp.Render(this);

      string file = @"c:\temp\test.jpg";

      string Extension = System.IO.Path.GetExtension(file).ToLower();

      BitmapEncoder encoder;
      if (Extension == ".gif")
        encoder = new GifBitmapEncoder();
      else if (Extension == ".png")
        encoder = new PngBitmapEncoder();
      else if (Extension == ".jpg")
        encoder = new JpegBitmapEncoder();
      else
        return;

      encoder.Frames.Add(BitmapFrame.Create(bmp));

      using (Stream stm = File.Create(file))
      {
        encoder.Save(stm);
      }
    }
Beispiel #16
0
        public void Save(Stream stream, ImageFormat format)
        {
            swmi.BitmapEncoder encoder;
            switch (format)
            {
            case ImageFormat.Png:
                encoder = new swmi.PngBitmapEncoder();
                break;

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

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

            case ImageFormat.Jpeg:
                encoder = new swmi.JpegBitmapEncoder();
                break;

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

            default:
                throw new NotSupportedException();
            }
            encoder.Frames.Add(swmi.BitmapFrame.Create(FrozenControl));
            encoder.Save(stream);
        }
Beispiel #17
0
        public void Animate(FinalRender renderer)
        {
            FileStream stream  = new FileStream(@"TMP.GIF", FileMode.Create);
            var        encoder = new System.Windows.Media.Imaging.GifBitmapEncoder();

            foreach (var f in frames)
            {
                encoder.Frames.Add(BitmapFrame.Create(toBitmapConvert(f)));
            }
            encoder.Save(stream);
            stream.Close();

            var test = new Jillzhang.GifUtility.GifDecoder();

            test.Decode(@"TMP.GIF");
            foreach (var frame in test.Frames)
            {
                frame.Delay = (short)((double)100 / Animatronic.FRAMES_PER_SECOND);
            }
            var test2 = new Jillzhang.GifUtility.GifEncoder(@"TMP.GIF");

            test2.Encode(test);

            //var w = new Jillzhang.GifUtility.GifHelper();
            //w.WaterMark(@"TMP2.GIF", "Distributed RT - ITCS 422", Color.White, new Font(new FontFamily("Arial"), 8), 0, 0, @"TMP2.GIF");

            renderer.Picture.LoadAsync(@"TMP.GIF");
        }
 public byte[] getGIFFromImageControl(BitmapImage imageC)
 {
     MemoryStream memStream = new MemoryStream();
     GifBitmapEncoder encoder = new GifBitmapEncoder();
     encoder.Frames.Add(BitmapFrame.Create(imageC));
     encoder.Save(memStream);
     return memStream.GetBuffer();
 }
Beispiel #19
0
        public static bool ConvertToGif(this List<BitmapSource> bmps, string filepath)
        {
            FileStream stream = new FileStream(filepath, FileMode.OpenOrCreate);
            GifBitmapEncoder encoder = new GifBitmapEncoder();
            bmps.ForEach(i =>
            {
                encoder.Frames.Add(BitmapFrame.Create(i));
            });
            encoder.Save(stream);

            return true;
        }
        static void bi_DownloadCompleted(object sender, EventArgs e)
        {
            string fullPath = System.Reflection.Assembly.GetAssembly(typeof(Microsoft.Samples.SqlServer.WordAddIn.WorkflowRibbon)).Location;
            string gifPath = String.Format(@"{0}$word.odata.gif", Path.GetDirectoryName(fullPath));
            using (FileStream stream = new FileStream(gifPath, FileMode.Create))
            {
                var encoder = new GifBitmapEncoder();
                encoder.Frames.Add(BitmapFrame.Create((BitmapImage)sender));
                encoder.Save(stream);
            }

            Globals.ThisAddIn.Application.Selection.InlineShapes.AddPicture(gifPath, false);
        }
Beispiel #21
0
        /// <summary>
        /// Method exports the GraphArea to an png image.
        /// </summary>
        /// <param name="surface">GraphArea control</param>
        /// <param name="path">Image destination path</param>
        /// <param name="imgdpi">Optional image DPI parameter</param>
        /// <param name="imgQuality">Optional image quality parameter (for some formats like JPEG)</param>
        public static void ExportToImage(GraphAreaBase surface, Uri path, ImageType itype, bool useZoomControlSurface = false, double imgdpi = DefaultDPI, int imgQuality = 100)
        {
            //Create a render bitmap and push the surface to it
            Visual vis = surface;
            if (useZoomControlSurface)
            {
                if (surface.Parent != null && surface.Parent is IZoomControl)
                    vis = (surface.Parent as IZoomControl).PresenterVisual;
                else if(surface.Parent!=null && surface.Parent is FrameworkElement && (surface.Parent as FrameworkElement).Parent is IZoomControl)
                    vis = ((surface.Parent as FrameworkElement).Parent as IZoomControl).PresenterVisual;
            }
            var renderBitmap =
                    new RenderTargetBitmap(
                                    //(int)surface.ActualWidth,
                                    //(int)surface.ActualHeight,
                    (int)(vis as UIElement).DesiredSize.Width + 100,
                    (int)(vis as UIElement).DesiredSize.Height + 100,
                    imgdpi,
                    imgdpi,
                    pixelFormat);

            //Render the graphlayout onto the bitmap.
            renderBitmap.Render(vis);

            //Create a file stream for saving image
            using (FileStream outStream = new FileStream(path.LocalPath, FileMode.Create))
            {
                //Use png encoder for our data
                BitmapEncoder encoder;
                switch (itype)
                {
                    case ImageType.PNG: encoder = new PngBitmapEncoder();
                        break;
                    case ImageType.JPEG: encoder = new JpegBitmapEncoder() { QualityLevel = imgQuality };
                        break;
                    case ImageType.BMP: encoder = new BmpBitmapEncoder();
                        break;
                    case ImageType.GIF: encoder = new GifBitmapEncoder();
                        break;
                    case ImageType.TIFF: encoder = new TiffBitmapEncoder();
                        break;
                    default: throw new GX_InvalidDataException("ExportToImage() -> Unknown output image format specified!");
                }

                //Push the rendered bitmap to it
                encoder.Frames.Add(BitmapFrame.Create(renderBitmap));
                //Save the data to the stream
                encoder.Save(outStream);
            }
        }
Beispiel #22
0
        //BlueMarble.Data.MarbleDataBase dataBase;
        public void InitiateVideo(int rollNum, int frameRate)
        {
            FileStream stream = new FileStream("new.gif", FileMode.Create);

            Stream imageStream = new FileStream("images.jpg", FileMode.Open, FileAccess.Read, FileShare.Read);
            JpegBitmapDecoder decoder = new JpegBitmapDecoder(imageStream, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
            BitmapSource image = decoder.Frames[0];
            GifBitmapEncoder newGif = new GifBitmapEncoder();

            for (int x = 0; x < 10; x++)
            {
                newGif.Frames.Add(BitmapFrame.Create(image));
            }
            bool duration = newGif.Frames[0].HasAnimatedProperties;

            imageStream = new FileStream("images2.jpg", FileMode.Open, FileAccess.Read, FileShare.Read);
            decoder = new JpegBitmapDecoder(imageStream, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
            image = decoder.Frames[0];

            for (int x = 0; x < 10; x++)
            {
                newGif.Frames.Add(BitmapFrame.Create(image));
            }

            imageStream = new FileStream("images3.jpg", FileMode.Open, FileAccess.Read, FileShare.Read);
            decoder = new JpegBitmapDecoder(imageStream, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
            image = decoder.Frames[0];
            for (int x = 0; x < 10; x++)
            {
                newGif.Frames.Add(BitmapFrame.Create(image));
            }

            var request = WebRequest.Create("http://www.gravatar.com/avatar/6810d91caff032b202c50701dd3af745?d=identicon&r=PG");

            using (var response = request.GetResponse())
            using (var webstream = response.GetResponseStream())
            {
                decoder = new JpegBitmapDecoder(webstream, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
                //imageStream = Bitmap.FromStream(webstream);
            }
            //decoder = new JpegBitmapDecoder(imageStream, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
            image = decoder.Frames[0];
            for (int x = 0; x < 10; x++)
            {
                newGif.Frames.Add(BitmapFrame.Create(image));
            }

            newGif.Save(stream);
        }
Beispiel #23
0
        /// <summary>
        /// Save a solved map to an image file.
        /// </summary>
        /// <param name="path"></param>
        /// <param name="map"></param>
        /// <param name="outputPath"></param>
        public static void OutputBitmap(
			MapPath path, 
			Map map, 
			string outputPath)
        {
            // Get pixels from original map data.
            byte[] pixels = path.TraceOverMap(map);

            // Output the bitmap.
            string extension = Path.GetExtension(outputPath);
            BitmapEncoder encoder;
            switch (extension)
            {
                default:
                    encoder = new BmpBitmapEncoder();
                    break;
                case ".png":
                    encoder = new PngBitmapEncoder();
                    break;
                case ".gif":
                    encoder = new GifBitmapEncoder();
                    break;
                case ".tif": case "tiff":
                    encoder = new TiffBitmapEncoder();
                    break;
                case ".jpg": case "jpeg":
                    encoder = new JpegBitmapEncoder();
                    break;
                case ".wmp":
                    encoder = new WmpBitmapEncoder();
                    break;
            }

            Console.WriteLine(extension);

            // TODO: Figure out why files have no compression.
            int stride = map.Width * Map.BytesPerPixel;
            BitmapSource bitmapSource = BitmapSource.Create(
                map.Width, map.Height,
                96, 96,
                PixelFormats.Bgra32, null, pixels, stride);

            encoder.Frames.Add(BitmapFrame.Create(bitmapSource));

            using (FileStream filestream = new FileStream(outputPath, FileMode.Create))
            {
                encoder.Save(filestream);
            }
        }
 private void CreateImageFile(FileStream file,BitmapFrame frame,ImageType type)
 {
     if(file==null)return;
     BitmapEncoder encoder=null;
     switch(type)
     {
     case ImageType.Bmp:encoder=new BmpBitmapEncoder();break;
     case ImageType.Jpg:encoder=new JpegBitmapEncoder(){QualityLevel=100};break;
     case ImageType.Png:encoder=new PngBitmapEncoder();break;
     case ImageType.Gif:encoder=new GifBitmapEncoder();break;
     case ImageType.Tiff:encoder=new TiffBitmapEncoder(){Compression=TiffCompressOption.Default};break;
     }
     encoder.Frames.Add(frame);
     encoder.Save(file);
 }
 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);
 }
Beispiel #26
0
        private bool SaveImage(BitmapSource image, string filename)
        {
            string ext = Path.GetExtension(filename).ToLower();
            BitmapEncoder encoder;

            if (ext == ".gif")
            {
                encoder = new GifBitmapEncoder();
            }
            else if (ext == ".png")
            {
                encoder = new PngBitmapEncoder();
            }
            else if (ext == ".jpg")
            {
                encoder = new JpegBitmapEncoder();
            }
            else
            {
                filename = Path.ChangeExtension(filename, ".png");
                encoder = new PngBitmapEncoder();
            }

            try
            {
                encoder.Frames.Add(BitmapFrame.Create(image));

                using (Stream stm = File.Create(filename))
                {
                    encoder.Save(stm);
                }
            }
            catch (SystemException)
            {
                return false;
            }

            return true;
        }
Beispiel #27
0
        public static void writeImage(String outputPath, BitmapSource image, Dictionary<String, Object> options = null, ImageMetadata metaData = null, CancellableOperationProgressBase progress = null)
        {            
            int width = image.PixelWidth;
            int height = image.PixelHeight;

            float scale = ImageUtils.resizeRectangle(width, height, Constants.MAX_THUMBNAIL_WIDTH, Constants.MAX_THUMBNAIL_HEIGHT);

            TransformedBitmap thumbnail = new TransformedBitmap(image, new System.Windows.Media.ScaleTransform(scale, scale));
          
            if (options != null)
            {                
                if (options.ContainsKey("Width"))
                {
                    width = (int)options["Width"];

                    if (!options.ContainsKey("Height"))
                    {
                        height = (int)(((float)width / image.PixelWidth) * image.PixelHeight);
                    }

                } 
                
                if (options.ContainsKey("Height")) {

                    height = (int)options["Height"];

                    if (!options.ContainsKey("Width"))
                    {
                        width = (int)(((float)height / image.PixelHeight) * image.PixelWidth);
                    }
                }
            }

            BitmapSource outImage = image;

            if (width != image.PixelWidth || height != image.PixelHeight)
            {      
                outImage = new TransformedBitmap(image, new System.Windows.Media.ScaleTransform((double)width / image.PixelWidth, (double)height / image.PixelHeight));
            }
          
            ImageFormat format = MediaFormatConvert.fileNameToImageFormat(outputPath);

            BitmapEncoder encoder = null;

            if (format == ImageFormat.Jpeg)
            {
                encoder = configureJpeg(options, ref thumbnail);
            }
            else if (format == ImageFormat.Png)
            {
                encoder = configurePng(options);                
            }
            else if (format == ImageFormat.Gif)
            {
                encoder = new GifBitmapEncoder();               
            }
            else if (format == ImageFormat.Bmp)
            {
                encoder = new BmpBitmapEncoder();
            }
            else if (format == ImageFormat.Tiff)
            {
                encoder = configureTiff(options);                
            }

            encoder.Frames.Add(BitmapFrame.Create(outImage, thumbnail, null, null));

            FileStream outputFile = new FileStream(outputPath, FileMode.Create);

            encoder.Save(outputFile);

            outputFile.Close();

            if (metaData != null)
            {
                metaData.Location = outputPath;
                ImageFileMetadataWriter metadataWriter = new ImageFileMetadataWriter();
                metadataWriter.writeMetadata(metaData, progress);
            }
        }
        public static void CreateIcon(FrameworkElement element, int width, int height, string path)
        {
            try
            {
                RenderTargetBitmap bmp = new RenderTargetBitmap(width, height, 96, 96, PixelFormats.Pbgra32);
                bmp.Render(element);

                string file = path;

                string Extension = Path.GetExtension(file).ToLower();

                BitmapEncoder encoder;
                if (Extension == ".gif")
                    encoder = new GifBitmapEncoder();
                else if (Extension == ".png")
                    encoder = new PngBitmapEncoder();
                else if (Extension == ".jpg")
                    encoder = new JpegBitmapEncoder();
                else
                    return;

                encoder.Frames.Add(BitmapFrame.Create(bmp));

                using (Stream stm = File.Create(file))
                {
                    encoder.Save(stm);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Beispiel #29
0
 internal byte[] GetEncodedImageData(ImageSource image, string preferredFormat)
 {
     try
     {
         byte[] result = null;
         BitmapEncoder encoder = null;
         switch (preferredFormat.ToLower())
         {
             case ".jpg":
             case ".jpeg":
                 encoder = new JpegBitmapEncoder();
                 break;
             case ".bmp":
                 encoder = new BmpBitmapEncoder();
                 break;
             case ".png":
                 encoder = new PngBitmapEncoder();
                 break;
             case ".tif":
             case ".tiff":
                 encoder = new TiffBitmapEncoder();
                 break;
             case ".gif":
                 encoder = new GifBitmapEncoder();
                 break;
             case ".wmp":
                 encoder = new WmpBitmapEncoder();
                 break;
         }
         if (image is BitmapSource)
         {
             MemoryStream stream = new MemoryStream();
             encoder.Frames.Add(BitmapFrame.Create(image as BitmapSource));
             encoder.Save(stream);
             stream.Seek(0, SeekOrigin.Begin);
             result = new byte[stream.Length];
             BinaryReader br = new BinaryReader(stream);
             br.Read(result, 0, (int)stream.Length);
             br.Close();
             stream.Close();
         }
         return result;
     }
     catch (System.Exception ex1)
     {
         TaskDialog.Show("Error!", "exception: " + ex1);
     }
     return null;
 }
        private void FileSave_Click(object sender, RoutedEventArgs e)
        {
            if (curArr == -1)
                return;
            Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog();
            dlg.InitialDirectory = Properties.Settings.Default.lastSavePath;
            Console.WriteLine(dlg.InitialDirectory);
            dlg.FileName = arrangements[curArr].Name;
            dlg.DefaultExt = ".png";
            dlg.AddExtension = true;
            dlg.Filter = "Portable Network Graphics|*.png|GIF Image|*.gif";
            Nullable<bool> result = dlg.ShowDialog();

            if (result == true) {
                string filename = dlg.FileName;
                Properties.Settings.Default.lastSavePath = dlg.FileName.Substring(0, dlg.FileName.LastIndexOf('\\'));
                Properties.Settings.Default.Save();
                RenderTargetBitmap bitmap = new RenderTargetBitmap(Convert.ToInt32(ArrangementCanvas.ActualWidth), Convert.ToInt32(ArrangementCanvas.ActualHeight), 72, 72, PixelFormats.Pbgra32);
                bitmap.Render(ArrangementCanvas2);
                bitmap.Render(ArrangementCanvas);
                BitmapFrame frame = BitmapFrame.Create((BitmapSource)bitmap);

                BitmapEncoder encoder = null;
                if (filename.Substring(filename.Length - 3, 3) == "png") {
                    encoder = new PngBitmapEncoder();
                    encoder.Frames.Add(frame);
                }
                if (filename.Substring(filename.Length - 3, 3) == "gif") {
                    encoder = new GifBitmapEncoder();
                    encoder.Frames.Add(frame);
                }
                FileStream saveFile = new FileStream(filename, FileMode.Create);
                if (encoder != null)
                    encoder.Save(saveFile);
                saveFile.Close();
            }
        }
        /// <summary>
        /// Image export method
        /// Encodes a RenderTargetBitmap as a graphic-file (bmp, gif, jpeg, png or tiff) and saves it with the given filename.
        /// </summary>
        /// <param name="filename">Filename</param>
        /// <returns>bool if the export was successfully</returns>
        /// <author>Thomas Meents, Bernhard Bruns, Andrej Albrecht</author>
        public bool export(String filename)
        {
            try
            {
                processModelCanvas.Background = Brushes.White;
                RenderTargetBitmap render = new RenderTargetBitmap((int)processModelCanvas.Width, (int)processModelCanvas.Height, 96d, 96d, PixelFormats.Pbgra32);
                render.Clone();
                processModelCanvas.Measure(new Size((int)processModelCanvas.Width, (int)processModelCanvas.Height));
                processModelCanvas.Arrange(new Rect(new Size((int)processModelCanvas.Width, (int)processModelCanvas.Height)));

                render.Render(processModelCanvas);

                switch (this.filetype)
                {
                    case ".bmp":
                        BmpBitmapEncoder bmpEncoder = new BmpBitmapEncoder();
                        bmpEncoder.Frames.Add(BitmapFrame.Create(render));
                        using (FileStream bmpFile = File.Create(filename))
                        {
                            bmpEncoder.Save(bmpFile);
                        }
                        break;
                    case ".gif":
                        GifBitmapEncoder gifEncoder = new GifBitmapEncoder();
                        gifEncoder.Frames.Add(BitmapFrame.Create(render));
                        using (FileStream gifFile = File.Create(filename))
                        {
                            gifEncoder.Save(gifFile);
                        }
                        break;
                    case ".jpeg":
                        JpegBitmapEncoder jpegEncoder = new JpegBitmapEncoder();
                        jpegEncoder.Frames.Add(BitmapFrame.Create(render));
                        using (FileStream jpegFile = File.Create(filename))
                        {
                            jpegEncoder.Save(jpegFile);
                        }
                        break;
                    case ".png":
                        PngBitmapEncoder pngEncoder = new PngBitmapEncoder();
                        pngEncoder.Frames.Add(BitmapFrame.Create(render));
                        using (FileStream pngFile = File.Create(filename))
                        {
                            pngEncoder.Save(pngFile);
                        }
                        break;
                    case ".tiff":
                        TiffBitmapEncoder tiffEncoder = new TiffBitmapEncoder();
                        tiffEncoder.Frames.Add(BitmapFrame.Create(render));
                        using (FileStream tiffFile = File.Create(filename))
                        {
                            tiffEncoder.Save(tiffFile);
                        }
                        break;
                }

                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }
Beispiel #32
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();
     }
 }
Beispiel #33
0
		private void btnSaveImageGraph_Click(object sender, RoutedEventArgs e)
		{
		
			var fileDialog = new SaveFileDialog()
			{
				Filter = "PNG (*.png)|*.png|JPEG (*.jpg)|*.jpg|GIF (*.gif)|*.gif|BMP (*.bmp)|*.bmp|TIFF (.tiff)|*.tiff"
			};

			fileDialog.ShowDialog();

			if (String.IsNullOrEmpty(fileDialog.FileName))
				return;

			// render it
			var renderBitmap = new RenderTargetBitmap((int)graphLayout.ActualWidth,
			                                          (int)graphLayout.ActualHeight,
			                                          96d,
			                                          96d,
			                                          PixelFormats.Default);
			renderBitmap.Render(graphLayout);

			using (var outStream = new FileStream(fileDialog.FileName, FileMode.Create))
			{
				BitmapEncoder encoder;

				switch (fileDialog.FilterIndex)
				{
					case 1:
						encoder = new PngBitmapEncoder();
						break;
					case 2:
						encoder = new JpegBitmapEncoder();
						break;
					case 3:
						encoder = new GifBitmapEncoder();
						break;
					case 4:
						encoder = new BmpBitmapEncoder();
						break;
					case 5:
						encoder = new TiffBitmapEncoder();
						break;
					default:
						encoder = new PngBitmapEncoder();
						break;
				}
				
				encoder.Frames.Add(BitmapFrame.Create(renderBitmap));
				encoder.Save(outStream);
			}
		}
Beispiel #34
0
 private static BitmapEncoder GetBitmapEncoder(ImageExtension type)
 {
     BitmapEncoder encoder = null;
     switch (type)
     {
         case ImageExtension.PNG:
             encoder = new PngBitmapEncoder();
             break;
         case ImageExtension.GIF:
             encoder = new GifBitmapEncoder();
             break;
         case ImageExtension.JPG:
             encoder = new JpegBitmapEncoder();
             break;
         default:
             break;
     }
     return encoder;
 }
Beispiel #35
0
        /// <summary>
        /// This is the method that actually does the work.
        /// </summary>
        /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param>
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            Hp.Drawing drawing = new Hp.Drawing();
            if (!DA.GetData <Hp.Drawing>(0, ref drawing))
            {
                return;
            }

            int    dpi       = 96;
            string path      = "C:\\Users\\Public\\Documents\\";
            string name      = DateTime.UtcNow.ToString("yyyy-dd-M_HH-mm-ss");;
            int    extension = 0;
            string format    = ".png";
            bool   save      = false;

            if (!DA.GetData(1, ref dpi))
            {
                return;
            }
            bool hasPath = DA.GetData(2, ref path);
            bool hasName = DA.GetData(3, ref name);

            if (!DA.GetData(4, ref extension))
            {
                return;
            }
            if (!DA.GetData(5, ref save))
            {
                return;
            }

            Si.BitmapEncoder encoding = new Si.PngBitmapEncoder();
            switch (extension)
            {
            case 1:
                encoding = new Si.JpegBitmapEncoder();
                format   = ".jpeg";
                break;

            case 2:
                encoding = new Si.BmpBitmapEncoder();
                format   = ".bmp";
                break;

            case 3:
                encoding = new Si.TiffBitmapEncoder();
                format   = ".tiff";
                break;

            case 4:
                encoding = new Si.GifBitmapEncoder();
                format   = ".gif";
                break;
            }

            if (!hasPath)
            {
                if (this.OnPingDocument().FilePath != null)
                {
                    path = Path.GetDirectoryName(this.OnPingDocument().FilePath) + "\\";
                }
            }
            else
            {
                path += "//";
            }

            string filepath = path + name + format;

            Sm.DrawingVisual dwg    = drawing.ToGeometryVisual();
            Bitmap           bitmap = dwg.ToBitmap(drawing.Width, drawing.Height, dpi, encoding);

            if (save)
            {
                bitmap.Save(filepath);
                bitmap.Dispose();
            }

            DA.SetData(0, filepath);
        }
        /// <summary> Saves the rendered scoreboard to an image when clicked. </summary>
        private void SaveImage()
        {
            if (MainWindowViewModel.DisplayWindow.IsVisible == false)
            {
                MessageBox.Show(
                    "Scoreboard must be showing on-screen in order to save to an image.",
                    "Error: Scoreboard Hidden",
                    MessageBoxButton.OK,
                    MessageBoxImage.Error);
                return;
            }

            const string Filter = "PNG Image (*.png)|*.png|" +
                                  "TIFF Image (*.tiff)|*.tiff|" +
                                  "All Files (*.*)|*.*";

            var sfd = new Microsoft.Win32.SaveFileDialog { Filter = Filter };

            if (sfd.ShowDialog() == true)
            {
                var filename = sfd.FileName;

                if (string.IsNullOrEmpty(filename))
                {
                    return;
                }

                var viewBox = MainWindowViewModel.DisplayWindow.rootGrid;

                var bmp = new RenderTargetBitmap(
                    (int)viewBox.RenderSize.Width, (int)viewBox.RenderSize.Height, 96, 96, PixelFormats.Pbgra32);
                bmp.Render(viewBox);

                BitmapEncoder encoder;

                var extUpper = Path.GetExtension(filename);

                if (extUpper == null)
                {
                    // Could happen if they choose all files and didn't type an extension.
                    MessageBox.Show(
                        "Unrecognized Image Format",
                        "Error: Format Unrecognized",
                        MessageBoxButton.OK,
                        MessageBoxImage.Error);
                    return;
                }

                string ext = extUpper.ToLower();

                if (ext.Equals(".png"))
                {
                    encoder = new PngBitmapEncoder();
                }
                else if (ext.Equals(".jpg"))
                {
                    encoder = new JpegBitmapEncoder { QualityLevel = 95 };
                }
                else if (ext.Equals(".tiff"))
                {
                    encoder = new TiffBitmapEncoder();
                }
                else if (ext.Equals(".gif"))
                {
                    encoder = new GifBitmapEncoder();
                }
                else if (ext.Equals(".bmp"))
                {
                    encoder = new BmpBitmapEncoder();
                }
                else
                {
                    MessageBox.Show(
                        "Unrecognized Image Format",
                        "Error: Format Unrecognized",
                        MessageBoxButton.OK,
                        MessageBoxImage.Error);
                    return;
                }

                using (var stream = new FileStream(filename, FileMode.Create))
                {
                    encoder.Frames.Add(BitmapFrame.Create(bmp));
                    encoder.Save(stream);
                }
            }
        }