Esempio n. 1
0
            public System.Drawing.Bitmap FlushToBitmap()
            {
                byte[] bits = new byte[width * height * 4];
                memStream = new System.IO.MemoryStream(bits);
                var stream = new SharpDX.WIC.WICStream(wicFactory, memStream);
                // Initialize a Jpeg encoder with this stream
                var encoder = new SharpDX.WIC.BitmapEncoder(wicFactory, SharpDX.WIC.ContainerFormatGuids.Bmp);

                encoder.Initialize(stream);

                // Create a Frame encoder
                var bitmapFrameEncode = new SharpDX.WIC.BitmapFrameEncode(encoder);

                bitmapFrameEncode.Initialize();
                bitmapFrameEncode.SetSize(width, height);
                var pixelFormatGuid = SharpDX.WIC.PixelFormat.FormatDontCare;

                bitmapFrameEncode.SetPixelFormat(ref pixelFormatGuid);
                bitmapFrameEncode.WriteSource(wicBitmap);

                bitmapFrameEncode.Commit();
                encoder.Commit();

                bitmapFrameEncode.Dispose();
                encoder.Dispose();
                stream.Dispose();
                return((System.Drawing.Bitmap)System.Drawing.Bitmap.FromStream(memStream));
            }
Esempio n. 2
0
        /// <summary>
        /// 保存图片
        /// </summary>
        /// <param name="wicFactory"></param>
        /// <param name="wicBitmap"></param>
        /// <param name="outputStream"></param>
        static void SaveD2DBitmap(SharpDX.WIC.ImagingFactory wicFactory, SharpDX.WIC.Bitmap wicBitmap, Stream outputStream)
        {
            using var encoder = new SharpDX.WIC.BitmapEncoder(wicFactory, SharpDX.WIC.ContainerFormatGuids.Png);
            encoder.Initialize(outputStream);
            using var frame = new SharpDX.WIC.BitmapFrameEncode(encoder);
            frame.Initialize();
            frame.SetSize(wicBitmap.Size.Width, wicBitmap.Size.Height);

            var pixelFormat = wicBitmap.PixelFormat;

            frame.SetPixelFormat(ref pixelFormat);
            frame.WriteSource(wicBitmap);
            frame.Commit();
            encoder.Commit();
        }
Esempio n. 3
0
        public static void SaveBitmap(DeviceManager dev, SharpDX.WIC.Bitmap bm, string filename)
        {
            System.Diagnostics.Debug.Assert(bm != null);
            Guid   containerFormat = Guid.Empty;
            string lowerName       = filename.ToLower();

            if (lowerName.Contains(".png"))
            {
                containerFormat = SharpDX.WIC.ContainerFormatGuids.Png;
            }
            else if (lowerName.Contains(".bmp"))
            {
                containerFormat = SharpDX.WIC.ContainerFormatGuids.Bmp;
            }
            else if (lowerName.Contains(".jpg"))
            {
                containerFormat = SharpDX.WIC.ContainerFormatGuids.Jpeg;
            }
            else if (lowerName.Contains(".jpeg"))
            {
                containerFormat = SharpDX.WIC.ContainerFormatGuids.Jpeg;
            }
            else if (lowerName.Contains(".tif"))
            {
                containerFormat = SharpDX.WIC.ContainerFormatGuids.Tiff;
            }
            else if (lowerName.Contains(".gif"))
            {
                containerFormat = SharpDX.WIC.ContainerFormatGuids.Gif;
            }

            Guid format = bm.PixelFormat;

            using (var stream = System.IO.File.OpenWrite(filename))
            {
                stream.Position = 0;
                using (SharpDX.WIC.BitmapEncoder enc = new SharpDX.WIC.BitmapEncoder(dev.WICFactory, containerFormat, stream))
                    using (SharpDX.WIC.BitmapFrameEncode bfe = new SharpDX.WIC.BitmapFrameEncode(enc))
                    {
                        bfe.Initialize();
                        bfe.SetPixelFormat(ref format);
                        bfe.SetSize(bm.Size.Width, bm.Size.Height);
                        bfe.WriteSource(bm);
                        bfe.Commit();
                        enc.Commit();
                    }
            }
        }
 public static void SaveToTiff(SharpDX.WIC.ImagingFactory imagingFactory, UnmanagedImage image, string filename, Guid format, int bytesPerPixel)
 {
     var file = new System.IO.FileStream(filename, System.IO.FileMode.Create);
     var stream = new SharpDX.WIC.WICStream(imagingFactory, file);
     var encoder = new SharpDX.WIC.BitmapEncoder(imagingFactory, SharpDX.WIC.ContainerFormatGuids.Tiff);
     encoder.Initialize(stream);
     var bitmapFrameEncode = new SharpDX.WIC.BitmapFrameEncode(encoder);
     //bitmapFrameEncode.Options.TiffCompressionMethod = SharpDX.WIC.TiffCompressionOption.None;
     bitmapFrameEncode.Initialize();
     bitmapFrameEncode.SetSize(image.Width, image.Height);
     bitmapFrameEncode.SetPixelFormat(ref format);
     bitmapFrameEncode.WritePixels(image.Height, image.DataIntPtr, image.Width * bytesPerPixel);
     bitmapFrameEncode.Commit();
     encoder.Commit();
     bitmapFrameEncode.Dispose();
     encoder.Dispose();
     stream.Dispose();
     file.Close();
     file.Dispose();
 }
        public static void SaveBitmap(DeviceManager dev, SharpDX.WIC.Bitmap bm, string filename)
        {
            System.Diagnostics.Debug.Assert(bm != null);
            Guid containerFormat = Guid.Empty;
            string lowerName = filename.ToLower();
            if (lowerName.Contains(".png"))
                containerFormat = SharpDX.WIC.ContainerFormatGuids.Png;
            else if (lowerName.Contains(".bmp"))
                containerFormat = SharpDX.WIC.ContainerFormatGuids.Bmp;
            else if (lowerName.Contains(".jpg"))
                containerFormat = SharpDX.WIC.ContainerFormatGuids.Jpeg;
            else if (lowerName.Contains(".jpeg"))
                containerFormat = SharpDX.WIC.ContainerFormatGuids.Jpeg;
            else if (lowerName.Contains(".tif"))
                containerFormat = SharpDX.WIC.ContainerFormatGuids.Tiff;
            else if (lowerName.Contains(".gif"))
                containerFormat = SharpDX.WIC.ContainerFormatGuids.Gif;

            Guid format = bm.PixelFormat;
            using (var stream = System.IO.File.OpenWrite(filename))
            {
                stream.Position = 0;
                using (SharpDX.WIC.BitmapEncoder enc = new SharpDX.WIC.BitmapEncoder(dev.WICFactory, containerFormat, stream))
                using (SharpDX.WIC.BitmapFrameEncode bfe = new SharpDX.WIC.BitmapFrameEncode(enc))
                {
                    bfe.Initialize();
                    bfe.SetPixelFormat(ref format);
                    bfe.SetSize(bm.Size.Width, bm.Size.Height);
                    bfe.WriteSource(bm);
                    bfe.Commit();
                    enc.Commit();
                }
            }
        }