示例#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));
            }
示例#2
0
 public void Dispose()
 {
     if (stream != null)
     {
         stream.Dispose();
         stream = null;
     }
     if (d2dRenderTarget != null)
     {
         d2dRenderTarget.Dispose();
         d2dRenderTarget = null;
     }
     if (wicBitmap != null)
     {
         wicBitmap.Dispose();
         wicBitmap = null;
     }
     if (d2dFactory != null)
     {
         d2dFactory.Dispose();
         d2dFactory = null;
     }
     if (wicFactory != null)
     {
         wicFactory.Dispose();
         wicFactory = null;
     }
     if (memStream != null)
     {
         memStream.Dispose();
     }
 }
示例#3
0
        /// <summary>
        /// 创建图片
        /// </summary>
        /// <param name="wicFactory"></param>
        /// <param name="fileName"></param>
        /// <returns></returns>
        static SharpDX.WIC.FormatConverter CreateWicImage(SharpDX.WIC.ImagingFactory wicFactory, string fileName)
        {
            using var decoder      = new SharpDX.WIC.JpegBitmapDecoder(wicFactory);
            using var decodeStream = new SharpDX.WIC.WICStream(wicFactory, fileName, SharpDX.IO.NativeFileAccess.Read);
            decoder.Initialize(decodeStream, SharpDX.WIC.DecodeOptions.CacheOnLoad);
            using var decodeFrame = decoder.GetFrame(0);
            var converter = new SharpDX.WIC.FormatConverter(wicFactory);

            converter.Initialize(decodeFrame, SharpDX.WIC.PixelFormat.Format32bppPBGRA);
            return(converter);
        }
示例#4
0
 public void Save(string filePath)
 {
     using (SharpDX.WIC.WICStream wICStream = new SharpDX.WIC.WICStream(imagingFactory, filePath, SharpDX.IO.NativeFileAccess.Write))
         using (SharpDX.WIC.PngBitmapEncoder encoder = new SharpDX.WIC.PngBitmapEncoder(imagingFactory))
         {
             encoder.Initialize(wICStream);
             using (SharpDX.WIC.BitmapFrameEncode bitmapFrameEncode = new SharpDX.WIC.BitmapFrameEncode(encoder))
             {
                 bitmapFrameEncode.Initialize();
                 bitmapFrameEncode.SetSize((int)this.Width, (int)this.Height);
                 var pixelFormatGuid = SharpDX.WIC.PixelFormat.FormatDontCare;
                 bitmapFrameEncode.SetPixelFormat(ref pixelFormatGuid);
                 bitmapFrameEncode.WriteSource(wicBitmap);
                 bitmapFrameEncode.Commit();
                 encoder.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();
 }