在C#内存中使用JPEG或PNG压缩图像,可以通过使用System.Drawing命名空间中的相关类和方法来实现。
对于JPEG压缩,可以使用System.Drawing.Imaging命名空间中的EncoderParameters和Encoder类。下面是一个示例代码:
using System.Drawing;
using System.Drawing.Imaging;
public byte[] CompressImageToJpeg(Image image, long quality)
{
EncoderParameters encoderParams = new EncoderParameters(1);
encoderParams.Param[0] = new EncoderParameter(Encoder.Quality, quality);
ImageCodecInfo jpegCodec = GetEncoderInfo("image/jpeg");
using (MemoryStream ms = new MemoryStream())
{
image.Save(ms, jpegCodec, encoderParams);
return ms.ToArray();
}
}
private ImageCodecInfo GetEncoderInfo(string mimeType)
{
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders();
foreach (ImageCodecInfo codec in codecs)
{
if (codec.MimeType == mimeType)
{
return codec;
}
}
return null;
}
上述代码中,CompressImageToJpeg方法接受一个Image对象和一个quality参数,将图像以JPEG格式进行压缩,并返回压缩后的字节数组。quality参数表示压缩质量,取值范围为0-100。
对于PNG压缩,可以使用System.Drawing命名空间中的Image.Save方法,并指定ImageFormat.Png作为保存格式。下面是一个示例代码:
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
public byte[] CompressImageToPng(Image image)
{
using (MemoryStream ms = new MemoryStream())
{
image.Save(ms, ImageFormat.Png);
return ms.ToArray();
}
}
上述代码中,CompressImageToPng方法接受一个Image对象,将图像以PNG格式进行压缩,并返回压缩后的字节数组。
这些方法可以在C#中使用JPEG或PNG压缩图像,并将其保存在内存中的字节数组中。根据实际需求,可以选择适合的压缩质量和格式。
领取专属 10元无门槛券
手把手带您无忧上云