压缩图像大小并返回图像c#

时间:2018-03-02 12:52:53

标签: c# image compression image-size

我正在创建一个函数,我传递一个Image,它将压缩图像并返回该图像对象。以下是我的代码:

public Image CompressImage(Image img)
{
    ImageCodecInfo jpegCodec = null;
    EncoderParameter imageQualitysParameter = new EncoderParameter(
                System.Drawing.Imaging.Encoder.Quality, 50L);
    ImageCodecInfo[] alleCodecs = ImageCodecInfo.GetImageEncoders();

    EncoderParameters codecParameter = new EncoderParameters(1);
    codecParameter.Param[0] = imageQualitysParameter;
    for (int i = 0; i < alleCodecs.Length; i++)
    {
        if (alleCodecs[i].MimeType == "image/jpeg")
        {
            jpegCodec = alleCodecs[i];
            break;
        }
    }
    Image img1;
    using (Stream memory = new MemoryStream())
    {
        img.Save(memory, jpegCodec, codecParameter);
        img1 = Image.FromStream(memory);
        memory.Close();
        memory.Dispose();
    }
    return img1;
}

但是当我将它保存在内存流中时,它显示错误

  

EnexolImageConversionApp.exe中发生未处理的“System.ArgumentException”类型异常

     

附加信息:参数无效。

在线

img.Save(memory, jpegCodec, codecParameter);

1 个答案:

答案 0 :(得分:0)

试用此代码 - 通过比较'api/getfolders.php' + Date.now()ImageCodecInfo来选择正确的ImageFormat.Guid

ImageCodecInfo.FormatID

最后一步是从接收到的字节数组再次加载图像。 为了更好地理解问题,请提供异常详细信息,包括stacktrace。