public Bitmap(Stream stream, bool useIcm) { if (stream == null) { throw new ArgumentNullException(nameof(stream)); } IntPtr bitmap = IntPtr.Zero; int status; if (useIcm) { status = Gdip.GdipCreateBitmapFromStreamICM(new GPStream(stream), out bitmap); } else { status = Gdip.GdipCreateBitmapFromStream(new GPStream(stream), out bitmap); } Gdip.CheckStatus(status); ValidateImage(bitmap); SetNativeImage(bitmap); EnsureSave(this, null, stream); }
public unsafe Bitmap(Stream stream, bool useIcm) { if (stream == null) { throw new ArgumentNullException(nameof(stream)); } using DrawingCom.IStreamWrapper streamWrapper = DrawingCom.GetComWrapper(new GPStream(stream)); IntPtr bitmap = IntPtr.Zero; if (useIcm) { Gdip.CheckStatus(Gdip.GdipCreateBitmapFromStreamICM(streamWrapper.Ptr, &bitmap)); } else { Gdip.CheckStatus(Gdip.GdipCreateBitmapFromStream(streamWrapper.Ptr, &bitmap)); } ValidateImage(bitmap); SetNativeImage(bitmap); EnsureSave(this, null, stream); }