public static void ShowExportDialog(this BitmapContainer image)
        {
            if (image == null) return;

            SaveFileDialog saveImg = new SaveFileDialog();
            saveImg.Filter = "Jpeg Image|*.jpg|Png Image|*.png|Bitmap Image|*.bmp|Tiff Image|*.tiff|Windows Media Bitmap|*.wmb";
            saveImg.Title = "Export Single Image";
            saveImg.FileName = image.Name;
            saveImg.AddExtension = true;
            saveImg.DefaultExt = "*.png";

            saveImg.CheckPathExists = true;

            BitmapEncoder encoder = null;
            if (saveImg.ShowDialog() == true)
            {
                string ext = Path.GetExtension(saveImg.FileName);
                switch (ext.ToLower())
                {
                    case ".png":
                        encoder = new PngBitmapEncoder();
                        break;
                    case ".bmp":
                        encoder = new BmpBitmapEncoder();
                        break;
                    case ".jpeg":
                    case ".jpg":
                        encoder = new JpegBitmapEncoder();
                        break;
                    case ".tiff":
                        encoder = new TiffBitmapEncoder();
                        break;
                    case ".wmb":
                        encoder = new WmpBitmapEncoder();
                        break;
                    default:
                        encoder = new BmpBitmapEncoder();
                        saveImg.FileName += ".bmp";
                        break;
                }

                encoder.Frames.Add(BitmapFrame.Create(image.Bitmap));
                using (FileStream fs = new FileStream(saveImg.FileName, FileMode.OpenOrCreate))
                {
                    encoder.Save(fs);
                    fs.Close();
                }
            }
        }
Beispiel #2
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);
            }
        }
Beispiel #3
0
        bool SaveImageToDisk(string filename, out string errorMessage)
        {
            string extension = filename.LastIndexOf(".") > -1 ? filename.Substring(filename.LastIndexOf(".")) : ".jpg";

            BitmapEncoder encoder = null;
            switch (extension.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;
                default:
                    errorMessage = "extension is wrong!";
                    return false;
            }

            try
            {
                FileStream stream = new FileStream(filename, FileMode.Create);
                encoder.Frames.Add(BitmapFrame.Create(imageToSave));
                encoder.Save(stream);
                errorMessage = "";
                stream.Close();
                return true;
            }
            catch (Exception e)
            {
                errorMessage = e.ToString();
            }

            return false;
        }
Beispiel #4
0
		/* Paste the page to various types supported by the windows encoder class */
		private void PastePage(object sender, RoutedEventArgs e)
		{
			var menu = (System.Windows.Controls.MenuItem)sender;

			String tag = (String)menu.Tag;

			if (!m_clipboardset || !System.Windows.Clipboard.ContainsImage() ||
				!m_init_done)
				return;
			var bitmap = System.Windows.Clipboard.GetImage();

			BitmapEncoder encoder;
			System.Windows.Forms.SaveFileDialog dlg = new System.Windows.Forms.SaveFileDialog();
			dlg.FilterIndex = 1;

			switch (tag)
			{
				case "PNG":
					dlg.Filter = "PNG Files(*.png)|*.png";
					encoder = new PngBitmapEncoder();

					break;
				case "JPG":
					dlg.Filter = "JPEG Files(*.jpg)|*.jpg";
					encoder = new JpegBitmapEncoder();
					break;

				case "WDP":
					dlg.Filter = "HDP Files(*.wdp)|*.wdp";
					encoder = new WmpBitmapEncoder();
					break;

				case "TIF":
					dlg.Filter = "TIFF Files(*.tif)|*.tif";
					encoder = new TiffBitmapEncoder();
					break;

				case "BMP":
					dlg.Filter = "BMP Files(*.bmp)|*.bmp";
					encoder = new BmpBitmapEncoder();
					break;

				case "GIF":
					dlg.Filter = "GIF Files(*.gif)|*.gif";
					encoder = new GifBitmapEncoder();
					break;

				default:
					return;
			}

			encoder.Frames.Add(BitmapFrame.Create(bitmap));
			if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
			{
				using (var stream = dlg.OpenFile())
					encoder.Save(stream);
			}
		}
        private BitmapEncoder GetBitmapEncoder(string fileExtension)
        {
            BitmapEncoder bitmapEncoder = null;

            if (_bitmapEncoder != null && _bitmapEncoder.CodecInfo != null)
            {
                string mimeType = String.Empty;
                BitmapCodecInfo codecInfo = _bitmapEncoder.CodecInfo;
                string mimeTypes      = codecInfo.MimeTypes;
                string fileExtensions = codecInfo.FileExtensions;
                switch (_encoderType)
                {
                    case ImageEncoderType.BmpBitmap:
                        mimeType = "image/bmp";
                        break;
                    case ImageEncoderType.GifBitmap:
                        mimeType = "image/gif";
                        break;
                    case ImageEncoderType.JpegBitmap:
                        mimeType = "image/jpeg,image/jpe,image/jpg";
                        break;
                    case ImageEncoderType.PngBitmap:
                        mimeType = "image/png";
                        break;
                    case ImageEncoderType.TiffBitmap:
                        mimeType = "image/tiff,image/tif";
                        break;
                    case ImageEncoderType.WmpBitmap:
                        mimeType = "image/vnd.ms-photo";
                        break;
                }

                if (!String.IsNullOrEmpty(fileExtensions) &&
                    fileExtensions.IndexOf(fileExtension,
                    StringComparison.OrdinalIgnoreCase) >= 0)
                {
                    bitmapEncoder = _bitmapEncoder;
                }
                else if (!String.IsNullOrEmpty(mimeTypes) &&
                    !String.IsNullOrEmpty(mimeType))
                {
                    string[] arrayMimeTypes = mimeType.Split(',');
                    for (int i = 0; i < arrayMimeTypes.Length; i++)
                    {
                        if (mimeTypes.IndexOf(arrayMimeTypes[i],
                            StringComparison.OrdinalIgnoreCase) >= 0)
                        {
                            bitmapEncoder = _bitmapEncoder;
                            break;
                        }
                    }
                }
            }

            if (bitmapEncoder == null)
            {
                switch (_encoderType)
                {
                    case ImageEncoderType.BmpBitmap:
                        bitmapEncoder = new BmpBitmapEncoder();
                        break;
                    case ImageEncoderType.GifBitmap:
                        bitmapEncoder = new GifBitmapEncoder();
                        break;
                    case ImageEncoderType.JpegBitmap:
                        JpegBitmapEncoder jpgEncoder = new JpegBitmapEncoder();
                        // Set the default/user options...
                        bitmapEncoder = jpgEncoder;
                        break;
                    case ImageEncoderType.PngBitmap:
                        PngBitmapEncoder pngEncoder = new PngBitmapEncoder();
                        // Set the default/user options...
                        bitmapEncoder = pngEncoder;
                        break;
                    case ImageEncoderType.TiffBitmap:
                        bitmapEncoder = new TiffBitmapEncoder();
                        break;
                    case ImageEncoderType.WmpBitmap:
                        WmpBitmapEncoder wmpEncoder = new WmpBitmapEncoder();
                        // Set the default/user options...
                        bitmapEncoder = wmpEncoder;
                        break;
                }
            }

            if (bitmapEncoder == null)
            {
                bitmapEncoder = new PngBitmapEncoder();
            }

            return bitmapEncoder;
        }
Beispiel #6
0
		/// <summary>Creates a converted copy of the image (wmp formatted).</summary>
		public static byte[] ConvertTo_WmpByteArray(this BitmapSource input)
		{
			var encoder = new WmpBitmapEncoder();
			//TODO include Options
			return input.ConvertTo_UsingEncoder(encoder);
		}
Beispiel #7
0
        public static byte[] ImageSourceToBytes(ImageSource image, string preferredFormat)
        {
            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;
        }
Beispiel #8
0
		private void SaveCurrentAs()
		{
			System.Windows.Forms.SaveFileDialog saveFileDialog = new System.Windows.Forms.SaveFileDialog();
			saveFileDialog.Title = Comisor.Resource.SaveImage;
			saveFileDialog.OverwritePrompt = true;
			saveFileDialog.Filter = Comisor.Resource.SaveFilter;
			saveFileDialog.AddExtension = true;
			saveFileDialog.ValidateNames = true;
			saveFileDialog.InitialDirectory = ys.DataProcessor.GetAvailableParentDir(imgInfo.FullName);
			saveFileDialog.FileName = imgInfo.Name.Remove(imgInfo.Name.LastIndexOf('.'));
			if (saveFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
			{
				BitmapEncoder encoder;
				BitmapSource bmp = imgContainer.Source as BitmapSource;
				string name = saveFileDialog.FileName.ToLower();
				switch (name.Remove(0, name.LastIndexOf('.')))
				{
					case ".png":
						PngBitmapEncoder pngEncoder = new PngBitmapEncoder();
						if (saveFileDialog.FilterIndex == 2)
							pngEncoder.Interlace = PngInterlaceOption.On;
						encoder = pngEncoder;
						break;
					case ".jpg":
						JpegBitmapEncoder jpgEncoder = new JpegBitmapEncoder();
						switch (saveFileDialog.FilterIndex)
						{
							case 3:
								jpgEncoder.QualityLevel = 50;
								break;
							case 4:
								jpgEncoder.QualityLevel = 85;
								break;
							case 5:
								jpgEncoder.QualityLevel = 100;
								break;
						}
						encoder = jpgEncoder;
						bmp = ys.ImageProcessor.LayWhiteBg(imgContainer.Source as BitmapSource);
						break;
					case ".gif":
						GifBitmapEncoder gifEncoder = new GifBitmapEncoder();
						encoder = gifEncoder;
						bmp = ys.ImageProcessor.LayWhiteBg(imgContainer.Source as BitmapSource);
						break;
					case ".bmp":
						BmpBitmapEncoder bmpEncoder = new BmpBitmapEncoder();
						encoder = bmpEncoder;
						bmp = ys.ImageProcessor.LayWhiteBg(imgContainer.Source as BitmapSource);
						break;
					case ".tif":
						TiffBitmapEncoder tifEncoder = new TiffBitmapEncoder();
						encoder = tifEncoder;
						if (saveFileDialog.FilterIndex == 8)
						{
							encoder.Frames = bmpDecoder.Frames;
							FileStream multilayerFS = new FileStream(saveFileDialog.FileName, FileMode.Create);
							encoder.Save(multilayerFS);
							multilayerFS.Dispose();
							return;
						}
						break;
					case ".wdp":
						WmpBitmapEncoder wdpEncoder = new WmpBitmapEncoder();
						encoder = wdpEncoder;
						break;
					default:
						return;
				}
				encoder.Frames.Add(BitmapFrame.Create(bmp));
				FileStream fs = new FileStream(saveFileDialog.FileName, FileMode.Create);
				encoder.Save(fs);
				fs.Dispose();
			}
		}
Beispiel #9
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 static BitmapEncoder GetBitmapEncoder(string fileExtension,
            ImageEncoderType encoderType)
        {
            BitmapEncoder bitampEncoder = null;

            switch (encoderType)
            {
                case ImageEncoderType.BmpBitmap:
                    bitampEncoder = new BmpBitmapEncoder();
                    break;
                case ImageEncoderType.GifBitmap:
                    bitampEncoder = new GifBitmapEncoder();
                    break;
                case ImageEncoderType.JpegBitmap:
                    JpegBitmapEncoder jpgEncoder = new JpegBitmapEncoder();
                    // Set the default/user options...
                    bitampEncoder = jpgEncoder;
                    break;
                case ImageEncoderType.PngBitmap:
                    PngBitmapEncoder pngEncoder = new PngBitmapEncoder();
                    // Set the default/user options...
                    bitampEncoder = pngEncoder;
                    break;
                case ImageEncoderType.TiffBitmap:
                    bitampEncoder = new TiffBitmapEncoder();
                    break;
                case ImageEncoderType.WmpBitmap:
                    WmpBitmapEncoder wmpEncoder = new WmpBitmapEncoder();
                    // Set the default/user options...
                    bitampEncoder = wmpEncoder;
                    break;
            }

            if (bitampEncoder == null)
            {
                bitampEncoder = new PngBitmapEncoder();
            }

            return bitampEncoder;
        }
Beispiel #11
0
        private byte[] EncodeImageData(ImageSource image, ImageEncoding encoding)
        {
            byte[] buffer = null;
            BitmapEncoder encoder = null;
            switch (encoding)
            {
                case ImageEncoding.Jpg100:
                    encoder = new JpegBitmapEncoder { QualityLevel = 100 };
                    break;

                case ImageEncoding.Jpg95:
                    encoder = new JpegBitmapEncoder { QualityLevel = 95 };
                    break;

                case ImageEncoding.Jpg90:
                    encoder = new JpegBitmapEncoder { QualityLevel = 90 };
                    break;

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

                case ImageEncoding.Bmp:
                    encoder = new BmpBitmapEncoder();
                    break;

                case ImageEncoding.Png:
                    encoder = new PngBitmapEncoder();
                    break;

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

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

                case ImageEncoding.Wmp:
                    encoder = new WmpBitmapEncoder();
                    break;
            }
            if (image is BitmapSource)
            {
                var stream = new MemoryStream();
                if (encoder != null)
                {
                    var bitmapFrame = BitmapFrame.Create(image as BitmapSource);
                    encoder.Frames.Add(bitmapFrame);
                    encoder.Save(stream);
                }
                stream.Seek(0L, SeekOrigin.Begin);
                buffer = new byte[stream.Length];
                var reader = new BinaryReader(stream);
                reader.Read(buffer, 0, (int)stream.Length);
                reader.Close();
                stream.Close();
            }
            return buffer;
        }
        public static void ShowExportMultipleDialog(this IEnumerable<BitmapContainer> images)
        {
            SaveFileDialog saveImg = new SaveFileDialog();
            saveImg.Filter = "Png Image|*.png|Jpeg Image|*.jpg|Bitmap Image|*.bmp|Tiff Image|*.tiff|Windows Media Bitmap|*.wmb";
            saveImg.Title = "Export All Image";
            saveImg.FileName = "[Multiple Files - Choose File Type]";
            saveImg.AddExtension = false;
            saveImg.FilterIndex = 0;

            saveImg.CheckPathExists = true;

            if (saveImg.ShowDialog() == true)
            {
                string ext = saveImg.Filter.Split('|')[saveImg.FilterIndex / 2 + 1].TrimStart('*');
                string path = Path.GetDirectoryName(saveImg.FileName);

                foreach (var bmp in images)
                {
                    BitmapEncoder encoder = null;

                    switch (ext.ToLower())
                    {
                        case ".png":
                            encoder = new PngBitmapEncoder();
                            break;
                        case ".bmp":
                            encoder = new BmpBitmapEncoder();
                            break;
                        case ".jpeg":
                        case ".jpg":
                            encoder = new JpegBitmapEncoder();
                            break;
                        case ".tiff":
                            encoder = new TiffBitmapEncoder();
                            break;
                        case ".wmb":
                            encoder = new WmpBitmapEncoder();
                            break;
                        default:
                            encoder = new BmpBitmapEncoder();
                            saveImg.FileName += ".bmp";
                            break;
                    }

                    encoder.Frames.Add(BitmapFrame.Create(bmp.Bitmap));
                    using (FileStream fs = new FileStream(Path.Combine(path, bmp.Name + ext), FileMode.OpenOrCreate))
                    {
                        encoder.Save(fs);
                        fs.Close();
                    }
                }
            }
        }
Beispiel #13
0
        /// <summary>
        /// Export the Sparrow Chart as Image
        /// </summary>
        /// <param name="fileName">Output File Name to Export the Chart as Image</param>
        public void ExportAsImage(string fileName)
        {
            string fileExtension = new FileInfo(fileName).Extension.ToLower(CultureInfo.InvariantCulture);

            BitmapEncoder imageEncoder = null;
            switch (fileExtension)
            {
                case ".bmp":
                    imageEncoder = new BmpBitmapEncoder();
                    break;

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

                case ".png":
                    imageEncoder = new PngBitmapEncoder();
                    break;

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

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

                case ".wdp":
                    imageEncoder = new WmpBitmapEncoder();
                    break;

                default:
                    imageEncoder = new BmpBitmapEncoder();
                    break;
            }

            RenderTargetBitmap bmpSource =new RenderTargetBitmap((int)this.ActualWidth,(int)this.ActualHeight, 96, 96,PixelFormats.Pbgra32);
            bmpSource.Render(this);

            imageEncoder.Frames.Add(BitmapFrame.Create(bmpSource));
            using (Stream stream = File.Create(fileName))
            {
                imageEncoder.Save(stream);
                stream.Close();
            }
            
        }
Beispiel #14
0
        private void OnSaveImpl(
            Document input, 
            Stream output, 
            SaveConfigToken token, 
            Surface scratchSurface, 
            ProgressEventHandler callback)
        {
            HDPhotoSaveConfigToken hdToken = token as HDPhotoSaveConfigToken;
            WmpBitmapEncoder wbe = new WmpBitmapEncoder();

            using (RenderArgs ra = new RenderArgs(scratchSurface))
            {
                input.Render(ra, true);
            }

            MemoryBlock block = scratchSurface.Scan0;
            IntPtr scan0 = block.Pointer;

            double dpiX;
            double dpiY;

            switch (input.DpuUnit)
            {
                case MeasurementUnit.Centimeter:
                    dpiX = Document.DotsPerCmToDotsPerInch(input.DpuX);
                    dpiY = Document.DotsPerCmToDotsPerInch(input.DpuY);
                    break;

                case MeasurementUnit.Inch:
                    dpiX = input.DpuX;
                    dpiY = input.DpuY;
                    break;

                case MeasurementUnit.Pixel:
                    dpiX = Document.GetDefaultDpu(MeasurementUnit.Inch);
                    dpiY = Document.GetDefaultDpu(MeasurementUnit.Inch);
                    break;

                default:
                    throw new InvalidEnumArgumentException();
            }

            BitmapSource bitmapSource = BitmapFrame.Create(
                scratchSurface.Width,
                scratchSurface.Height,
                dpiX,
                dpiY,
                System.Windows.Media.PixelFormats.Bgra32,
                null,
                scan0,
                (int)block.Length, // TODO: does not support >2GB images
                scratchSurface.Stride);

            FormatConvertedBitmap fcBitmap = new FormatConvertedBitmap(
                bitmapSource,
                hdToken.BitDepth == 24 ? PixelFormats.Bgr24 : PixelFormats.Bgra32,
                null,
                0);

            BitmapFrame outputFrame0 = BitmapFrame.Create(fcBitmap);

            wbe.Frames.Add(outputFrame0);
            wbe.ImageQualityLevel = (float)hdToken.Quality / 100.0f;

            string tempFileName = FileSystem.GetTempFileName();

            FileStream tempFileOut = new FileStream(tempFileName, FileMode.Create, FileAccess.Write, FileShare.Read);
            wbe.Save(tempFileOut);
            tempFileOut.Close();
            tempFileOut = null;

            FileStream tempFileIn = new FileStream(tempFileName, FileMode.Open, FileAccess.ReadWrite, FileShare.Read);
            WmpBitmapDecoder wbd = new WmpBitmapDecoder(tempFileIn, BitmapCreateOptions.None, BitmapCacheOption.None);
            BitmapFrame ioFrame0 = wbd.Frames[0];
            InPlaceBitmapMetadataWriter metadata2 = ioFrame0.CreateInPlaceBitmapMetadataWriter();
            CopyMetadataTo(metadata2, input.Metadata);
            tempFileIn.Close();
            tempFileIn = null;

            FileStream tempFileIn2 = new FileStream(tempFileName, FileMode.Open, FileAccess.ReadWrite, FileShare.Read);
            Utility.CopyStream(tempFileIn2, output);
            tempFileIn2.Close();
            tempFileIn2 = null;

            try
            {
                File.Delete(tempFileName);
            }

            catch (Exception)
            {
            }

            // WPF doesn't give us an IDisposable implementation on its types
            Utility.GCFullCollect();
        }
Beispiel #15
0
        //---------------------------------------------------------
        private void btnSave_Click(object sender, RoutedEventArgs e)
        {
            if ( MyCanvas == null) return;
            Image saveData = Croper.Crop(MyCanvas, 0, 0, MyCanvas.Width, MyCanvas.Height);

            SaveFileDialog saveFileDialogue = new SaveFileDialog()
            {
                FileName = "Untitled",
                Filter = "Bitmap Image (.bmp)|*.bmp|Gif Image (.gif)|*.gif|JPEG Image (.jpeg)|*.jpeg|Png Image (.png)|*.png|Tiff Image (.tiff)|*.tiff|Wmf Image (.wmf)|*.wmf"
            };
            if (saveFileDialogue.ShowDialog() == true)
            {
                //Image saveData = paintLogic.Save();
                BitmapEncoder encoder;
                #region Encoding
                string extension = System.IO.Path.GetExtension(saveFileDialogue.FileName);
                switch (extension.ToLower())
                {
                    case ".jpeg":
                        encoder = new JpegBitmapEncoder();
                        break;
                    case ".png":
                        encoder = new PngBitmapEncoder();
                        break;
                    case ".gif":
                        encoder = new GifBitmapEncoder();
                        break;
                    case ".tiff":
                        encoder = new TiffBitmapEncoder();
                        break;
                    case ".wmf":
                        encoder = new WmpBitmapEncoder();
                        break;
                    case ".bmp":
                        encoder = new BmpBitmapEncoder();
                        break;
                    default:
                        return;
                }
                #endregion
                encoder.Frames.Add(saveData.Source as BitmapFrame);
                using (FileStream file = File.Create(saveFileDialogue.FileName))
                {
                    encoder.Save(file);
                }
            }
        }
        public override void Set(string key, object value, CacheItemPolicy policy, string regionName = null)
        {
            var bitmap = value as BitmapFrame;

            if (bitmap == null)
            {
                throw new ArgumentException("The parameter value must contain a System.Windows.Media.Imaging.BitmapFrame.");
            }

            var metadata = (BitmapMetadata)bitmap.Metadata;
            var format = metadata != null ? metadata.Format : "bmp";
            BitmapEncoder encoder = null;

            switch (format)
            {
                case "bmp":
                    encoder = new BmpBitmapEncoder();
                    break;
                case "gif":
                    encoder = new GifBitmapEncoder();
                    break;
                case "jpg":
                    encoder = new JpegBitmapEncoder();
                    break;
                case "png":
                    encoder = new PngBitmapEncoder();
                    break;
                case "tiff":
                    encoder = new TiffBitmapEncoder();
                    break;
                case "wmphoto":
                    encoder = new WmpBitmapEncoder();
                    break;
                default:
                    break;
            }

            if (encoder == null)
            {
                throw new NotSupportedException(string.Format("The bitmap format {0} is not supported.", format));
            }

            memoryCache.Set(key, bitmap, policy, regionName);

            var path = string.Format("{0}.{1}", GetPath(key), format);

            try
            {
                Directory.CreateDirectory(Path.GetDirectoryName(path));

                using (var fileStream = new FileStream(path, FileMode.Create, FileAccess.Write))
                {
                    encoder.Frames.Add(bitmap);
                    encoder.Save(fileStream);
                }

                var fileSecurity = File.GetAccessControl(path);
                fileSecurity.AddAccessRule(fullControlRule);
                File.SetAccessControl(path, fileSecurity);
            }
            catch (Exception ex)
            {
                Debug.WriteLine("ImageFileCache: Writing file {0} failed: {1}", path, ex.Message);
            }
        }
      private void TakeScreenCapture(Control control, string imageFileName)
      {
         UIElement element = control;
         if (element.Dispatcher.Thread.IsAlive && !element.Dispatcher.HasShutdownStarted)
         {
            WriteObject(
            element.Dispatcher.Invoke((Func<object>)(() =>
            {
               try
               {
                  Window w = element as Window;
                  if (w != null && w.Content is UIElement)
                  {
                     element = ((Window)element).Content as UIElement;
                  }

                  var rtb = new RenderTargetBitmap((int)element.RenderSize.Width, (int)element.RenderSize.Height, _resolution.Width, _resolution.Height, _pixelFormat);
                  rtb.Render(element);

                  if (string.IsNullOrEmpty(imageFileName))
                  {
                     Clipboard.SetImage(rtb);
                     WriteWarning("No file path provided for image, screen capture placed on clipboard");
                     return null;
                  }
                  else
                  {
                     BitmapEncoder encoder = null;

                     switch (Path.GetExtension(imageFileName).ToUpperInvariant())
                     {
                        case ".BMP": { encoder = new BmpBitmapEncoder(); break; }
                        case ".GIF": { encoder = new GifBitmapEncoder(); break; }
                        case ".JPG": { encoder = new JpegBitmapEncoder(); break; }
                        case ".JPEG": { encoder = new JpegBitmapEncoder(); break; }
                        case ".PNG": { encoder = new PngBitmapEncoder(); break; }
                        case ".TIF": { encoder = new TiffBitmapEncoder(); break; }
                        case ".TIFF": { encoder = new TiffBitmapEncoder(); break; }
                        case ".WDP": { encoder = new WmpBitmapEncoder(); break; }
                        default:
                           {
                              encoder = new PngBitmapEncoder();
                              imageFileName = Path.Combine(Path.GetDirectoryName(imageFileName), Path.GetFileNameWithoutExtension(imageFileName) + ".png");
                              break;
                           }
                     }

                     encoder.Frames.Add(BitmapFrame.Create(rtb));
                     // Make sure .Net is thinking the same thing as PowerShell
                     var now = Environment.CurrentDirectory;
                     Environment.CurrentDirectory = base.CurrentProviderLocation("FileSystem").ProviderPath;

                     int i = 0;
                     var fileName = imageFileName;
                     while (File.Exists(fileName))
                     {
                        fileName = Path.GetFileNameWithoutExtension(imageFileName) + String.Format(CultureInfo.InvariantCulture, "{0:000}", i++) + Path.GetExtension(imageFileName);
                     }

                     using(var stream = File.Create(Path.Combine(Path.GetDirectoryName(imageFileName), fileName)))
                     {
                        encoder.Save(stream);
                     }
                     Environment.CurrentDirectory = now;
                     return new FileInfo(fileName);
                  }
               }
               catch (Exception ex)
               {
                  return new ErrorRecord(ex, "ScreenCaptureError", ErrorCategory.InvalidOperation, element);
               }
            })));
         }
         else
         {
            WriteError(new ErrorRecord(new System.Threading.ThreadStateException("Can't take screenshot of a window that's not running"), "WindowStopped", ErrorCategory.ResourceUnavailable, element));
         }
      }
Beispiel #18
0
        private void CreateAndShowMainWindow()
        {
            // Create the application's main window
            _mainWindow = new Window {Title = "WDP Imaging Sample"};
            var mySv = new ScrollViewer();

            var width = 128;
            var height = width;
            var stride = width/8;
            var pixels = new byte[height*stride];

            // Define the image palette
            var myPalette = BitmapPalettes.WebPalette;

            // Creates a new empty image with the pre-defined palette

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

            var stream = new FileStream("new.wdp", FileMode.Create);
            var encoder = new WmpBitmapEncoder();
            var myTextBlock = new TextBlock {Text = "Codec Author is: " + encoder.CodecInfo.Author};
            encoder.Frames.Add(BitmapFrame.Create(image));
            encoder.Save(stream);


            // Open a Stream and decode a WDP image
            Stream imageStreamSource = new FileStream("tulipfarm.wdp", FileMode.Open, FileAccess.Read, FileShare.Read);
            var decoder = new WmpBitmapDecoder(imageStreamSource, BitmapCreateOptions.PreservePixelFormat,
                BitmapCacheOption.Default);
            BitmapSource bitmapSource = decoder.Frames[0];

            // Draw the Image
            var myImage = new Image
            {
                Source = bitmapSource,
                Stretch = Stretch.None,
                Margin = new Thickness(20)
            };


            // Open a Uri and decode a WDP image
            var myUri = new Uri("tulipfarm.wdp", UriKind.RelativeOrAbsolute);
            var decoder3 = new WmpBitmapDecoder(myUri, BitmapCreateOptions.PreservePixelFormat,
                BitmapCacheOption.Default);
            BitmapSource bitmapSource3 = decoder3.Frames[0];

            // Draw the Image
            var myImage2 = new Image
            {
                Source = bitmapSource3,
                Stretch = Stretch.None,
                Margin = new Thickness(20)
            };

            var stream2 = new FileStream("tulipfarm.jpg", FileMode.Open);
            var decoder2 = new JpegBitmapDecoder(stream2, BitmapCreateOptions.PreservePixelFormat,
                BitmapCacheOption.Default);
            BitmapSource bitmapSource2 = decoder2.Frames[0];
            var stream3 = new FileStream("new2.wdp", FileMode.Create);
            var encoder2 = new WmpBitmapEncoder();
            encoder2.Frames.Add(BitmapFrame.Create(bitmapSource2));
            encoder2.Save(stream3);

            // Define a StackPanel to host the decoded WDP images
            var myStackPanel = new StackPanel
            {
                Orientation = Orientation.Vertical,
                VerticalAlignment = VerticalAlignment.Stretch,
                HorizontalAlignment = HorizontalAlignment.Stretch
            };

            // Add the Image and TextBlock to the parent Grid
            myStackPanel.Children.Add(myImage);
            myStackPanel.Children.Add(myImage2);
            myStackPanel.Children.Add(myTextBlock);

            // Add the StackPanel as the Content of the Parent Window Object
            mySv.Content = myStackPanel;
            _mainWindow.Content = mySv;
            _mainWindow.Show();
        }
 public void SaveImageToFile(string path)
 {
     string extension = Path.GetExtension(path).ToLower();
     DrawingVisual dv = new DrawingVisual();
     using (DrawingContext dc = dv.RenderOpen())
     {
         if (extension == ".bmp" || extension == "jpg")
         {
             dc.DrawRectangle(Brushes.White, null, new Rect(0, 0, Math.Ceiling(Width + Location.X * 2), Math.Ceiling(Width + Location.Y * 2)));
         }
         ActiveChild.DrawEquation(dc);
     }
     RenderTargetBitmap bitmap = new RenderTargetBitmap((int)(Math.Ceiling(Width + Location.X * 2)), (int)(Math.Ceiling(Height + Location.Y * 2)), 96, 96, PixelFormats.Default);
     bitmap.Render(dv);
     BitmapEncoder encoder = null;
     switch (extension)
     {
         case ".jpg":
             encoder = new JpegBitmapEncoder();
             break;
         case ".gif":
             encoder = new GifBitmapEncoder();
             break;
         case ".bmp":
             encoder = new BmpBitmapEncoder();
             break;
         case ".png":
             encoder = new PngBitmapEncoder();
             break;
         case ".wdp":
             encoder = new WmpBitmapEncoder();
             break;
         case ".tif":
             encoder = new TiffBitmapEncoder();
             break;
     }
     try
     {
         encoder.Frames.Add(BitmapFrame.Create(bitmap));
         using (Stream s = File.Create(path))
         {
             encoder.Save(s);
         }
     }
     catch
     {
         MessageBox.Show("File could not be saved. Please make sure the path you entered is correct", "Error");
     }
 }
        public static void Save(this BitmapSource source, Stream stream, BitmapEncoding enc, BitmapMetadata data)
        {
            BitmapEncoder encorder = null;

            switch (enc)
            {
                case BitmapEncoding.Bmp:
                    encorder = new BmpBitmapEncoder();
                    break;
                case BitmapEncoding.Png:
                    encorder = new PngBitmapEncoder();
                    break;
                case BitmapEncoding.Jpg:
                    encorder = new JpegBitmapEncoder();
                    break;
                case BitmapEncoding.Tiff:
                    encorder = new TiffBitmapEncoder();
                    break;
                case BitmapEncoding.Gif:
                    encorder = new GifBitmapEncoder();
                    break;
                case BitmapEncoding.Wmp:
                    encorder = new WmpBitmapEncoder();
                    break;
                case BitmapEncoding.Icon:
                    throw new NotSupportedException("The icon format can only load!");
                default:
                    throw new NotImplementedException();
            }

            encorder.Frames.Add(BitmapFrame.Create(source));
            if (data != null)
                encorder.Metadata = data;
            encorder.Save(stream);
        }
        /// <summary>
        ///     Gets the encoded image data.
        /// </summary>
        /// <param name="image">The image.</param>
        /// <param name="preferredFormat">The preferred Image format.</param>
        /// <param name="qualityLevel">JpegBitmapEncoder QualityLevel</param>
        /// <returns></returns>
        public static byte[] ToEncodedBuffer(this BitmapSource image, ImageFormat preferredFormat, int qualityLevel)
        {
            byte[] result = default(byte[]);
            BitmapEncoder encoder = default(BitmapEncoder);
            if (image == null) return null;

            switch (preferredFormat)
            {
                case ImageFormat.JPEG:
                case ImageFormat.JPG:
                    encoder = new JpegBitmapEncoder
                        {
                            QualityLevel = qualityLevel
                        };
                    break;
                case ImageFormat.BMP:
                    encoder = new BmpBitmapEncoder();
                    break;

                case ImageFormat.PNG:
                    encoder = new PngBitmapEncoder();
                    break;
                case ImageFormat.TIFF:
                case ImageFormat.TIF:
                    encoder = new TiffBitmapEncoder();
                    break;
                case ImageFormat.GIF:
                    encoder = new GifBitmapEncoder();
                    break;
                case ImageFormat.WMP:
                    encoder = new WmpBitmapEncoder();
                    break;
            }
            using (var stream = new MemoryStream())
            {
                if (encoder != null)
                {
                    encoder.Frames.Add(BitmapFrame.Create(image));
                    encoder.Save(stream);
                }
                stream.Seek(0, SeekOrigin.Begin);
                result = new byte[stream.Length];
                using (var br = new BinaryReader(stream))
                {
                    br.Read(result, 0, (int) stream.Length);
                    br.Close();
                }
                stream.Close();
                return result;
            }
        }