public IntPtr WriteStream(IMagickImage image, MagickSettings settings, ReadWriteStreamDelegate reader, ReadWriteStreamDelegate writer, SeekStreamDelegate seeker, TellStreamDelegate teller) { using (INativeInstance settingsNative = MagickSettings.CreateInstance(settings)) { IntPtr exception = IntPtr.Zero; IntPtr result; #if PLATFORM_AnyCPU if (NativeLibrary.Is64Bit) #endif #if PLATFORM_x64 || PLATFORM_AnyCPU result = NativeMethods.X64.MagickImageCollection_WriteStream(image.GetInstance(), settingsNative.Instance, reader, writer, seeker, teller, out exception); #endif #if PLATFORM_AnyCPU else #endif #if PLATFORM_x86 || PLATFORM_AnyCPU result = NativeMethods.X86.MagickImageCollection_WriteStream(image.GetInstance(), settingsNative.Instance, reader, writer, seeker, teller, out exception); #endif MagickException magickException = MagickExceptionHelper.Create(exception); if (MagickExceptionHelper.IsError(magickException)) { if (result != IntPtr.Zero) { Dispose(result); } throw magickException; } RaiseWarning(magickException); return(result); } }
public IntPtr ReadStream(IMagickSettings <QuantumType> settings, ReadWriteStreamDelegate reader, SeekStreamDelegate seeker, TellStreamDelegate teller) { using (INativeInstance settingsNative = MagickSettings.CreateInstance(settings)) { IntPtr exception = IntPtr.Zero; IntPtr result; #if PLATFORM_AnyCPU if (OperatingSystem.Is64Bit) #endif #if PLATFORM_x64 || PLATFORM_AnyCPU result = NativeMethods.X64.MagickImageCollection_ReadStream(settingsNative.Instance, reader, seeker, teller, out exception); #endif #if PLATFORM_AnyCPU else #endif #if PLATFORM_x86 || PLATFORM_AnyCPU result = NativeMethods.X86.MagickImageCollection_ReadStream(settingsNative.Instance, reader, seeker, teller, out exception); #endif var magickException = MagickExceptionHelper.Create(exception); if (magickException == null) { return(result); } if (magickException is MagickErrorException) { if (result != IntPtr.Zero) { Dispose(result); } throw magickException; } RaiseWarning(magickException); return(result); } }
/// <summary> /// Writes the images to the specified buffer writter. If the output image's file format does not /// allow multi-image files multiple files will be written. /// </summary> /// <param name="bufferWriter">The buffer writer to write the images to.</param> /// <exception cref="MagickException">Thrown when an error is raised by ImageMagick.</exception> public void Write(IBufferWriter <byte> bufferWriter) { Throw.IfNull(nameof(bufferWriter), bufferWriter); if (_images.Count == 0) { return; } var settings = GetSettings().Clone(); settings.FileName = null; try { AttachImages(); var wrapper = new BufferWriterWrapper(bufferWriter); var writer = new ReadWriteStreamDelegate(wrapper.Write); _nativeInstance.WriteStream(_images[0], settings, writer, null, null, null); } finally { DetachImages(); } }
/// <summary> /// Writes the image to the specified file. /// </summary> /// <param name="bufferWriter">The buffer writer to write the image to.</param> /// <exception cref="MagickException">Thrown when an error is raised by ImageMagick.</exception> public void Write(IBufferWriter <byte> bufferWriter) { Throw.IfNull(nameof(bufferWriter), bufferWriter); _settings.FileName = null; var wrapper = new BufferWriterWrapper(bufferWriter); var writer = new ReadWriteStreamDelegate(wrapper.Write); _nativeInstance.WriteStream(_settings, writer, null, null, null); }
private static void DoNativeCompress(Stream input, Stream output, bool progressive, bool lossless, int quality) { using (StreamWrapper readWrapper = StreamWrapper.CreateForReading(input)) { using (StreamWrapper writeWrapper = StreamWrapper.CreateForWriting(output)) { ReadWriteStreamDelegate reader = new ReadWriteStreamDelegate(readWrapper.Read); ReadWriteStreamDelegate writer = new ReadWriteStreamDelegate(writeWrapper.Write); var nativeJpegOptimizer = new NativeJpegOptimizer(); nativeJpegOptimizer.CompressStream(reader, writer, progressive, lossless, quality); } } }
public static int CompressStream(ReadWriteStreamDelegate reader, ReadWriteStreamDelegate writer, bool progressive, bool lossless, int quality) { #if PLATFORM_AnyCPU if (NativeLibrary.Is64Bit) #endif #if PLATFORM_x64 || PLATFORM_AnyCPU return((int)NativeMethods.X64.JpegOptimizer_CompressStream(reader, writer, progressive, lossless, (UIntPtr)quality)); #endif #if PLATFORM_AnyCPU else #endif #if PLATFORM_x86 || PLATFORM_AnyCPU return((int)NativeMethods.X86.JpegOptimizer_CompressStream(reader, writer, progressive, lossless, (UIntPtr)quality)); #endif }
public void CompressStream(ReadWriteStreamDelegate reader, ReadWriteStreamDelegate writer, bool progressive, bool lossless, int quality) { IntPtr exception = IntPtr.Zero; #if PLATFORM_AnyCPU if (NativeLibrary.Is64Bit) #endif #if PLATFORM_x64 || PLATFORM_AnyCPU NativeMethods.X64.JpegOptimizer_CompressStream(reader, writer, progressive, lossless, (UIntPtr)quality, out exception); #endif #if PLATFORM_AnyCPU else #endif #if PLATFORM_x86 || PLATFORM_AnyCPU NativeMethods.X86.JpegOptimizer_CompressStream(reader, writer, progressive, lossless, (UIntPtr)quality, out exception); #endif CheckException(exception); }
public void WriteStream(IMagickImage image, MagickSettings settings, ReadWriteStreamDelegate writer, SeekStreamDelegate seeker, TellStreamDelegate teller, ReadWriteStreamDelegate reader) { using (INativeInstance settingsNative = MagickSettings.CreateInstance(settings)) { IntPtr exception = IntPtr.Zero; #if PLATFORM_AnyCPU if (NativeLibrary.Is64Bit) #endif #if PLATFORM_x64 || PLATFORM_AnyCPU NativeMethods.X64.MagickImageCollection_WriteStream(image.GetInstance(), settingsNative.Instance, writer, seeker, teller, reader, out exception); #endif #if PLATFORM_AnyCPU else #endif #if PLATFORM_x86 || PLATFORM_AnyCPU NativeMethods.X86.MagickImageCollection_WriteStream(image.GetInstance(), settingsNative.Instance, writer, seeker, teller, reader, out exception); #endif CheckException(exception); } }
private void AddImages(ReadOnlySequence <byte> data, IMagickReadSettings <QuantumType>?readSettings, bool ping) { if (data.IsSingleSegment) { AddImages(data.FirstSpan, readSettings, ping); return; } var settings = CreateSettings(readSettings); settings.Ping = ping; settings.FileName = null; var wrapper = new ReadOnlySequenceWrapper(data); var reader = new ReadWriteStreamDelegate(wrapper.Read); var seeker = new SeekStreamDelegate(wrapper.Seek); var teller = new TellStreamDelegate(wrapper.Tell); var result = _nativeInstance.ReadStream(settings, reader, seeker, teller); AddImages(result, settings); }
public static extern void MagickImageCollection_WriteStream(IntPtr image, IntPtr settings, ReadWriteStreamDelegate writer, SeekStreamDelegate seeker, TellStreamDelegate teller, ReadWriteStreamDelegate reader, out IntPtr exception);
public static extern void JpegOptimizer_CompressStream(ReadWriteStreamDelegate reader, ReadWriteStreamDelegate writer, [MarshalAs(UnmanagedType.Bool)] bool progressive, [MarshalAs(UnmanagedType.Bool)] bool lossless, UIntPtr quality, out IntPtr exception);