Save images in C#
To Byte Array
To save a GdPicture image to a byte array, use the SaveAsByteArray method of the GdPictureImaging class.
SaveAsByteArray parameters:
imageID— The GdPicture image identifier.Data(by reference) — Byte array that receives encoded image data.Length(by reference) — Number of valid bytes written toData.ImageFormat— Output format as a member of theDocumentFormatenumeration.EncoderParameter— Encoding/compression parameter depending on output format.
SaveAsByteArray returns a GdPictureStatus, which should be checked.
Typical EncoderParameter values:
- JPEG — Quality
1to100 - PNG — Compression level
0to9 - TIFF — Values from
TiffCompressionenumeration - JPEG2000 — Compression rate
1to512 - WebP — Quality
1to100 - Other formats — Usually
0
When you no longer need an image resource, release it with the ReleaseGdPictureImage method.
The following example saves a previously loaded JPG image to a byte array:
using GdPicture14;using System;using System.IO;
using GdPictureImaging gdPictureImaging = new GdPictureImaging();
int imageID = gdPictureImaging.CreateGdPictureImageFromFile(@"C:\temp\source.jpg");if (imageID == 0){ Console.WriteLine($"CreateGdPictureImageFromFile failed: {gdPictureImaging.GetStat()}"); return;}
byte[] data = Array.Empty<byte>();int length = 0;
GdPictureStatus status = gdPictureImaging.SaveAsByteArray( imageID, ref data, ref length, DocumentFormat.DocumentFormatPNG, 9);
if (status != GdPictureStatus.OK){ Console.WriteLine($"SaveAsByteArray failed: {status}"); gdPictureImaging.ReleaseGdPictureImage(imageID); return;}
File.WriteAllBytes(@"C:\temp\output.png", data.AsSpan(0, length).ToArray());gdPictureImaging.ReleaseGdPictureImage(imageID);Imports GdPicture14Imports System.IO
Using gdPictureImaging As New GdPictureImaging() Dim imageID As Integer = gdPictureImaging.CreateGdPictureImageFromFile("C:\temp\source.jpg") If imageID = 0 Then Console.WriteLine($"CreateGdPictureImageFromFile failed: {gdPictureImaging.GetStat()}") Return End If
Dim data As Byte() = {} Dim length As Integer = 0
Dim status As GdPictureStatus = gdPictureImaging.SaveAsByteArray( imageID, data, length, DocumentFormat.DocumentFormatPNG, 9)
If status <> GdPictureStatus.OK Then Console.WriteLine($"SaveAsByteArray failed: {status}") gdPictureImaging.ReleaseGdPictureImage(imageID) Return End If
Dim outputData(length - 1) As Byte Array.Copy(data, outputData, length) File.WriteAllBytes("C:\temp\output.png", outputData)
gdPictureImaging.ReleaseGdPictureImage(imageID)End Using