<PackageReference Include="System.Drawing.Common" Version="9.0.0-preview.7.24405.4" />

EncoderParameters

public sealed class EncoderParameters : IDisposable
Encapsulates an array of EncoderParameter objects.
using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using Windows.Win32.Graphics.GdiPlus; namespace System.Drawing.Imaging { public sealed class EncoderParameters : IDisposable { [Nullable(1)] [field: Nullable(1)] public EncoderParameter[] Param { [NullableContext(1)] get; [NullableContext(1)] set; } public EncoderParameters(int count) { Param = new EncoderParameter[count]; } public EncoderParameters() { Param = new EncoderParameter[1]; } internal unsafe global::Windows.Win32.Graphics.GdiPlus.EncoderParameters* ConvertToNative() { int num = Param.Length; global::Windows.Win32.Graphics.GdiPlus.EncoderParameters* ptr = (global::Windows.Win32.Graphics.GdiPlus.EncoderParameters*)(long)Marshal.AllocHGlobal(sizeof(global::Windows.Win32.Graphics.GdiPlus.EncoderParameters) + (num - 1) * sizeof(global::Windows.Win32.Graphics.GdiPlus.EncoderParameter)); ptr->Count = (uint)num; Span<global::Windows.Win32.Graphics.GdiPlus.EncoderParameter> parameters = ptr->Parameters; for (int i = 0; i < num; i++) { parameters[i] = Param[i].ToNative(); } return ptr; } [return: Nullable(1)] internal unsafe static EncoderParameters ConvertFromNative(global::Windows.Win32.Graphics.GdiPlus.EncoderParameters* native) { if (native == null) throw Status.InvalidParameter.GetException(); Span<global::Windows.Win32.Graphics.GdiPlus.EncoderParameter> parameters = native->Parameters; EncoderParameters encoderParameters = new EncoderParameters(parameters.Length); for (int i = 0; i < parameters.Length; i++) { encoderParameters.Param[i] = new EncoderParameter(new Encoder(parameters[i].Guid), (int)parameters[i].NumberOfValues, (EncoderParameterValueType)parameters[i].Type, (IntPtr)parameters[i].Value); } return encoderParameters; } public void Dispose() { EncoderParameter[] param = Param; for (int i = 0; i < param.Length; i++) { param[i]?.Dispose(); } Param = null; } } }