1
我正在使用以下代码来压缩图像,并且它做的不错,但我想使用压缩的图像而不保存它。所以现在我必须保存图像,然后再次读取,这很慢。有没有一种方法来压缩它,而不是保存它。在不保存的情况下压缩图像
private void compress(System.Drawing.Image img, long quality, ImageCodecInfo codec)
{
EncoderParameters parameters = new EncoderParameters(1);
parameters.Param[0] = new EncoderParameter(Encoder.Quality, quality);
img.Save("check1.jpg", codec, parameters);
}
private static ImageCodecInfo GetCodecInfo(string mimeType)
{
foreach (ImageCodecInfo encoder in ImageCodecInfo.GetImageEncoders())
if (encoder.MimeType == mimeType)
return encoder;
throw new ArgumentOutOfRangeException(
string.Format("'{0}' not supported", mimeType));
}
当它执行保存时,我现在得到:在System.Drawing.dll中发生未处理的类型为“System.ArgumentException”的异常 附加信息:参数无效。 – kgsw
如果你看看我提供的链接,这个重载不会抛出'ArgumentException',只抛出'ArgumentNullException'和'ExternalException'。你确定你收到一个'ArgumentException'吗?你确定它在'img.Save'行吗? –
这是肯定的保存行,这是从屏幕上复制\ System.Drawing.dll 发生类型'System.ArgumentException'的未处理的异常其他信息:参数无效。 – kgsw