public static Bitmap CallThumbnailer(Guid guid, string filePath, uint size) { using (FileStream fs = File.OpenRead(filePath)) { using (var istm = new ManagedIStream(fs)) { var thumbType = Type.GetTypeFromCLSID(guid); object thumbHandler = Activator.CreateInstance(thumbType); if (thumbHandler is IInitializeWithStream) { var init_res = ((IInitializeWithStream)thumbHandler).Initialize(istm, 0); if (thumbHandler is IThumbnailProvider) { IntPtr pHbitmap; WTS_ALPHATYPE alphaType; var thumb_res = ((IThumbnailProvider)thumbHandler).GetThumbnail(size, out pHbitmap, out alphaType); var img = Image.FromHbitmap(pHbitmap); return(img); } else { throw new NotSupportedException(); } } else { throw new NotSupportedException(); } } } }
public void NavigateComplete2(object pDisp, ref object url) { UnsafeNativeMethods.IWebBrowser2 webBrowser = (UnsafeNativeMethods.IWebBrowser2)pDisp; if (this._parent.AxIWebBrowser2 == webBrowser) { if (this._parent.DocumentStream != null) { Invariant.Assert(this._parent.NavigatingToAboutBlank && string.Compare((string)url, "about:blank", StringComparison.OrdinalIgnoreCase) == 0); try { UnsafeNativeMethods.IHTMLDocument nativeHTMLDocument = this._parent.NativeHTMLDocument; if (nativeHTMLDocument != null) { UnsafeNativeMethods.IPersistStreamInit persistStreamInit = nativeHTMLDocument as UnsafeNativeMethods.IPersistStreamInit; System.Runtime.InteropServices.ComTypes.IStream pstm = new ManagedIStream(this._parent.DocumentStream); persistStreamInit.Load(pstm); } return; } finally { this._parent.DocumentStream = null; } } string text = (string)url; if (this._parent.NavigatingToAboutBlank) { Invariant.Assert(string.Compare(text, "about:blank", StringComparison.OrdinalIgnoreCase) == 0); text = null; } Uri uri = string.IsNullOrEmpty(text) ? null : new Uri(text); NavigationEventArgs e = new NavigationEventArgs(uri, null, null, null, null, true); this._parent.OnNavigated(e); } }
static void ToTiff(string path) { using (var bmp = WicBitmapSource.Load(path)) { //Dump(bmp.GetMetadataReader()); for (var i = 0; i < 8; i++) { var option = (WICTiffCompressionOption)i; using var file = File.OpenWrite("test." + option + ".tiff"); using var encoder = WICImagingFactory.CreateEncoder(WicCodec.GUID_ContainerFormatTiff); var mis = new ManagedIStream(file); encoder.Initialize(mis); var newFrame = encoder.CreateNewFrame(); var dic = new Dictionary <string, object>(); dic["TiffCompressionMethod"] = option; newFrame.Item2.Write(dic); newFrame.Initialize(); using (var writer = newFrame.GetMetadataQueryWriter()) { //writer.SetMetadataByName("/ifd/{ushort=296}", 1); writer.SetMetadataByName("/ifd/xmp/exif:ImageUniqueID", "ImageId" + option); } newFrame.WriteSource(bmp.ComObject); newFrame.Item1.Commit(); encoder.Commit(); } } }
public static ComObject <IWICBitmapSource> LoadBitmapSource(Stream stream, WICDecodeOptions metadataOptions = WICDecodeOptions.WICDecodeMetadataCacheOnDemand) { if (stream == null) { throw new ArgumentNullException(nameof(stream)); } var wfac = (IWICImagingFactory) new WICImagingFactory(); IWICBitmapDecoder decoder = null; IWICBitmapFrameDecode frame = null; var mis = new ManagedIStream(stream); try { wfac.CreateDecoderFromStream(mis, IntPtr.Zero, metadataOptions, out decoder).ThrowOnError(); decoder.GetFrame(0, out frame).ThrowOnError(); wfac.CreateFormatConverter(out var converter).ThrowOnError(); var format = WICConstants.GUID_WICPixelFormat32bppPBGRA; converter.Initialize(frame, ref format, WICBitmapDitherType.WICBitmapDitherTypeNone, null, 0, WICBitmapPaletteType.WICBitmapPaletteTypeCustom).ThrowOnError(); return(new ComObject <IWICBitmapSource>(converter)); } finally { ComObject.Release(frame); ComObject.Release(decoder); ComObject.Release(wfac); } }
private void btStart_Click(object sender, EventArgs e) { if (rbSTreamTypeFile.Checked) { FileStream fs = new FileStream(edFilename.Text, FileMode.Open); ManagedIStream stream = new ManagedIStream(fs); // specifing settings // MediaPlayer1.Source_Mode = VFMediaPlayerSource.Memory_DS; MediaPlayer1.Source_Stream = stream; MediaPlayer1.Source_Stream_Size = fs.Length; } else { byte[] source = File.ReadAllBytes(edFilename.Text); MemoryStream ms = new MemoryStream(source); ManagedIStream stream = new ManagedIStream(ms); // specifing settings // MediaPlayer1.Source_Mode = VFMediaPlayerSource.Memory_DS; MediaPlayer1.Source_Stream = stream; MediaPlayer1.Source_Stream_Size = ms.Length; } // video and audio present in file. tune this settings to play audio files or video files without audio MediaPlayer1.Source_Stream_VideoPresent = true; MediaPlayer1.Source_Stream_AudioPresent = true; MediaPlayer1.Source_Mode = VFMediaPlayerSource.Memory_DS; MediaPlayer1.Audio_OutputDevice = "Default DirectSound Device"; if (VideoCapture.Filter_Supported_EVR()) { MediaPlayer1.Video_Renderer.Video_Renderer = VFVideoRenderer.EVR; } else if (VideoCapture.Filter_Supported_VMR9()) { MediaPlayer1.Video_Renderer.Video_Renderer = VFVideoRenderer.VMR9; } else { MediaPlayer1.Video_Renderer.Video_Renderer = VFVideoRenderer.VideoRenderer; } MediaPlayer1.Debug_Mode = cbDebugMode.Checked; MediaPlayer1.Play(); tbTimeline.Maximum = (int)(MediaPlayer1.Duration_Time() / 1000); timer1.Enabled = true; }
static void CopyGif() { using (var dec = WicBitmapDecoder.Load(@"source.gif")) { var reader = dec.GetMetadataQueryReader(); Dump(reader); Console.WriteLine(); foreach (var frame in dec) { Console.WriteLine(frame.Size); reader = frame.GetMetadataReader(); Dump(reader); Console.WriteLine(); } using (var encoder = WICImagingFactory.CreateEncoder(dec.ContainerFormat)) { using (var file = File.OpenWrite("test.gif")) { var mis = new ManagedIStream(file); encoder.Initialize(mis); foreach (var frame in dec) { var newFrame = encoder.CreateNewFrame(); newFrame.Initialize(); var md = frame.GetMetadataReader().Enumerate(); using (var writer = newFrame.GetMetadataQueryWriter()) { writer.EncodeMetadata(md); // change delay here writer.SetMetadataByName("/grctlext/Delay", (ushort)5); } if (frame.Palette != null) { newFrame.SetPalette(frame.Palette.ComObject); } newFrame.WriteSource(frame.ComObject); newFrame.Item1.Commit(); } encoder.Commit(); } } } }
public Image GetImage() { Image ret = null; try { Guid clsid = Guid.Empty; foreach (ImageCodecInfo codec in ImageCodecInfo.GetImageEncoders()) { if (codec.FilenameExtension.IndexOf("*.JPG") >= 0) { clsid = codec.Clsid; break; } } IntPtr img = IntPtr.Zero; int st = GDIPlus_DLL.GdipCreateBitmapFromGdiDib(bmpptr, pixptr, ref img); if ((st != 0) || (img == IntPtr.Zero)) return ret; /* string tempFile = Path.GetTempFileName(); // "TEMPSCANIMAGE.JPG"; st = GDIPlus_DLL.GdipSaveImageToFile (img, tempFile, ref clsid, IntPtr.Zero); if (st == 0) { //Image iff = Image.FromFile(tempFile); //ret = iff.Clone() as Image; ret = (Image)Image.FromFile(tempFile); GDIPlus_DLL.GdipDisposeImage(img); File.Delete(tempFile); } */ MemoryStream ms = new MemoryStream(); ManagedIStream mis = new ManagedIStream(ms); st = GDIPlus_DLL.GdipSaveImageToStream(img, mis, ref clsid, IntPtr.Zero); if (st == 0) { ret = new Bitmap(ms); GDIPlus_DLL.GdipDisposeImage(img); } GC.SuppressFinalize(mis); } catch (Exception ex) { MessageBox.Show(ex.Source + " : " + ex.Message + Environment.NewLine + " [" + ex.StackTrace + "]", "Error !!!"); } return ret; }
private void btStop_Click(object sender, EventArgs e) { MediaPlayer1.Stop(); timer1.Enabled = false; tbTimeline.Value = 0; _fileStream?.Dispose(); _fileStream = null; _memoryStream?.Dispose(); _memoryStream = null; _memorySource = null; _stream = null; }
public bool AddToFileSystem(IFsiDirectoryItem rootItem, CancellationToken cancellationToken, string basePath = "") { if (cancellationToken.IsCancellationRequested) { return(false); } try { var stream = new ManagedIStream(File.Open(Path, FileMode.Open, FileAccess.Read, FileShare.Read)); rootItem.AddFile(System.IO.Path.Combine(basePath, DisplayName), stream); return(true); } catch (Exception) { return(false); } }
public void Save( Stream stream, Guid encoderContainerFormat, Guid?pixelFormat = null, WICBitmapEncoderCacheOption cacheOptions = WICBitmapEncoderCacheOption.WICBitmapEncoderNoCache, IEnumerable <KeyValuePair <string, object> > encoderOptions = null, IEnumerable <WicMetadataKeyValue> metadata = null, WicPalette encoderPalette = null, WicPalette framePalette = null, WICRect?sourceRectangle = null) { if (stream == null) { throw new ArgumentNullException(nameof(stream)); } using (var encoder = WICImagingFactory.CreateEncoder(encoderContainerFormat)) { var mis = new ManagedIStream(stream); encoder.Initialize(mis, cacheOptions); if (encoderPalette != null) { // gifs... encoder.SetPalette(encoderPalette.ComObject); } var frameBag = encoder.CreateNewFrame(); if (encoderOptions != null) { frameBag.Item2.Write(encoderOptions); } frameBag.Initialize(); if (metadata?.Any() == true) { using (var writer = frameBag.GetMetadataQueryWriter()) { writer.EncodeMetadata(metadata); } } if (pixelFormat.HasValue) { frameBag.SetPixelFormat(pixelFormat.Value); } if (framePalette != null) { frameBag.Item1.SetPalette(framePalette.ComObject); } // "WIC error 0x88982F0C. The component is not initialized" here can mean the palette is not set // "WIC error 0x88982F45. The bitmap palette is unavailable" here means for example we're saving a file that doesn't support palette (even if we called SetPalette before, it may be useless) frameBag.WriteSource(_comObject, sourceRectangle); frameBag.Item1.Commit(); encoder.Commit(); } }
private async void btStart_Click(object sender, EventArgs e) { mmError.Text = string.Empty; // video and audio present in file. tune this settings to play audio files or video files without audio bool videoPresent; bool audioPresent; if (rbVideoWithAudio.Checked) { videoPresent = true; audioPresent = true; } else if (rbVideoWithoutAudio.Checked) { videoPresent = true; audioPresent = false; } else { videoPresent = false; audioPresent = true; } if (rbSTreamTypeFile.Checked) { _fileStream = new FileStream(edFilename.Text, FileMode.Open); _stream = new ManagedIStream(_fileStream); // specifying settings MediaPlayer1.Source_MemoryStream = new MemoryStreamSource(_stream, videoPresent, audioPresent, _fileStream.Length); } else { _memorySource = File.ReadAllBytes(edFilename.Text); _memoryStream = new MemoryStream(_memorySource); _stream = new ManagedIStream(_memoryStream); // specifying settings MediaPlayer1.Source_MemoryStream = new MemoryStreamSource(_stream, videoPresent, audioPresent, _fileStream.Length); } MediaPlayer1.Source_Mode = MediaPlayerSourceMode.Memory_DS; MediaPlayer1.Audio_OutputDevice = "Default DirectSound Device"; if (FilterHelpers.Filter_Supported_EVR()) { MediaPlayer1.Video_Renderer.VideoRenderer = VideoRendererMode.EVR; } else if (FilterHelpers.Filter_Supported_VMR9()) { MediaPlayer1.Video_Renderer.VideoRenderer = VideoRendererMode.VMR9; } else { MediaPlayer1.Video_Renderer.VideoRenderer = VideoRendererMode.VideoRenderer; } MediaPlayer1.Debug_Mode = cbDebugMode.Checked; await MediaPlayer1.PlayAsync(); tbTimeline.Maximum = (int)(await MediaPlayer1.Duration_TimeAsync()).TotalSeconds; timer1.Enabled = true; }
public static IntPtr GenerateHICON(ImageSource image, Size dimensions) { if (image == null) { return(IntPtr.Zero); } BitmapFrame bitmapFrame = image as BitmapFrame; if (bitmapFrame != null) { bitmapFrame = Utility.GetBestMatch(bitmapFrame.Decoder.Frames, (int)dimensions.Width, (int)dimensions.Height); } else { Rect rectangle = new Rect(0.0, 0.0, dimensions.Width, dimensions.Height); double num = dimensions.Width / dimensions.Height; double num2 = image.Width / image.Height; if (image.Width <= dimensions.Width && image.Height <= dimensions.Height) { rectangle = new Rect((dimensions.Width - image.Width) / 2.0, (dimensions.Height - image.Height) / 2.0, image.Width, image.Height); } else if (num > num2) { double num3 = image.Width / image.Height * dimensions.Width; rectangle = new Rect((dimensions.Width - num3) / 2.0, 0.0, num3, dimensions.Height); } else if (num < num2) { double num4 = image.Height / image.Width * dimensions.Height; rectangle = new Rect(0.0, (dimensions.Height - num4) / 2.0, dimensions.Width, num4); } DrawingVisual drawingVisual = new DrawingVisual(); DrawingContext drawingContext = drawingVisual.RenderOpen(); drawingContext.DrawImage(image, rectangle); drawingContext.Close(); RenderTargetBitmap renderTargetBitmap = new RenderTargetBitmap((int)dimensions.Width, (int)dimensions.Height, 96.0, 96.0, PixelFormats.Pbgra32); renderTargetBitmap.Render(drawingVisual); bitmapFrame = BitmapFrame.Create(renderTargetBitmap); } IntPtr result; using (MemoryStream memoryStream = new MemoryStream()) { new PngBitmapEncoder { Frames = { bitmapFrame } }.Save(memoryStream); using (ManagedIStream managedIStream = new ManagedIStream(memoryStream)) { IntPtr zero = IntPtr.Zero; try { Status status = NativeMethods.GdipCreateBitmapFromStream(managedIStream, out zero); if (status != Status.Ok) { result = IntPtr.Zero; } else { IntPtr intPtr; status = NativeMethods.GdipCreateHICONFromBitmap(zero, out intPtr); if (status != Status.Ok) { result = IntPtr.Zero; } else { result = intPtr; } } } finally { Utility.SafeDisposeImage(ref zero); } } } return(result); }
protected override void Command() { try { Body2 CorpsBase = null; String MateriauCorpsBase = ""; if (MdlBase.eSelect_RecupererTypeObjet() == e_swSelectType.swSelFACES) { var face = MdlBase.eSelect_RecupererObjet <Face2>(); CorpsBase = face.GetBody(); } else if (MdlBase.eSelect_RecupererTypeObjet() == e_swSelectType.swSelSOLIDBODIES) { CorpsBase = MdlBase.eSelect_RecupererObjet <Body2>(); } if (CorpsBase == null) { System.Windows.Forms.MessageBox.Show("Erreur de corps selectionné"); return; } MateriauCorpsBase = CorpsBase.eGetMateriauCorpsOuPiece(MdlBase.ePartDoc(), MdlBase.eNomConfigActive()); System.Windows.Forms.OpenFileDialog pDialogue = new System.Windows.Forms.OpenFileDialog { Filter = "Fichier texte (*.data)|*.data|Tout les fichiers (*.*)|*.*", Multiselect = false, InitialDirectory = Path.GetDirectoryName(Path.Combine(MdlBase.GetPathName(), "Pieces", "Corps")), RestoreDirectory = true }; String Chemin = ""; if (pDialogue.ShowDialog() == System.Windows.Forms.DialogResult.OK) { Chemin = pDialogue.FileName; } else { System.Windows.Forms.MessageBox.Show("Erreur de chemin"); return; } Body2 CorpsCharge = null; String MateriauCorpsCharge = ""; String NoCorps = ""; Byte[] Tab = File.ReadAllBytes(Chemin); using (MemoryStream ms = new MemoryStream(Tab)) { ManagedIStream MgIs = new ManagedIStream(ms); Modeler mdlr = (Modeler)App.Sw.GetModeler(); CorpsCharge = (Body2)mdlr.Restore(MgIs); } if (CorpsCharge == null) { System.Windows.Forms.MessageBox.Show("Erreur de corps chargé"); return; } NoCorps = Path.GetFileNameWithoutExtension(Chemin).Substring(1); System.Windows.Forms.MessageBox.Show("NoCorps : " + NoCorps); var cheminNomenclature = Path.Combine(Path.GetDirectoryName(Path.GetDirectoryName(Chemin)), "Nomenclature.txt"); System.Windows.Forms.MessageBox.Show("Chemin Nomenclature : " + cheminNomenclature); using (var sr = new StreamReader(cheminNomenclature, Encoding.GetEncoding(1252))) { // On lit la première ligne contenant l'entête des colonnes String ligne = sr.ReadLine(); if (ligne.IsRef()) { while ((ligne = sr.ReadLine()) != null) { if (!String.IsNullOrWhiteSpace(ligne)) { var tab = ligne.Split(new char[] { '\t' }); if (NoCorps == tab[0]) { MateriauCorpsCharge = tab[4]; break; } } } } } if (String.IsNullOrWhiteSpace(MateriauCorpsCharge)) { System.Windows.Forms.MessageBox.Show("Erreur de materiau corps chargé"); return; } var Result = "Est different"; if (MateriauCorpsCharge == MateriauCorpsBase) { Result = "Est semblable"; } System.Windows.Forms.MessageBox.Show("Materiau : " + MateriauCorpsCharge + " " + MateriauCorpsBase + " " + Result); Result = "Est different"; if (CorpsBase.eComparerGeometrie(CorpsCharge) == Sw.Comparaison_e.Semblable) { Result = "Est semblable"; } System.Windows.Forms.MessageBox.Show("Corps : " + Result); } catch (Exception e) { this.LogMethode(new Object[] { e }); } }