我正在尝试“重新保存”图像并收到错误“GDI +中发生了一般错误”。我已经做了一些搜索这个错误,但还没有找到解决方案!大多数建议都提到:
我正在使用的代码如下:
using (Stream @imageStream = ResourceManager.CreateFile(finalResourceId, imageFileName))
{
using (MemoryStream ms = new MemoryStream(imageFile.ResourceObject))
{
using (Image img = Image.FromStream(ms))
{
imageWidth = img.Width;
imageHeight = img.Height;
img.Save(@imageStream, img.RawFormat);
}
}
}
在上面的代码中,ResourceManager.CreateFile
返回等效的MemoryStream
,因此不应出现任何“资源问题”。
我不认为其他人遇到过这个问题并且能够分享他们的解决方案吗?在此先感谢您的帮助!
答案 0 :(得分:1)
感谢@Scozzard提醒我想一个解决方法!
int imageWidth, imageHeight;
using (Stream imageStream = ResourceManager.CreateFile(finalResourceId, imageFileName))
{
using (Image img = Image.FromStream(new MemoryStream(imageFile.ResourceObject)))
{
imageWidth = img.Width;
imageHeight = img.Height;
}
imageStream.Write(imageFile.ResourceObject, 0, imageFile.ResourceObject.Length);
}
因为我完全在内存中工作,所以我不需要使用图像对象来重新保存它,因为它是相同的图像格式 - 我可以将字节缓冲区复制到新的流中。
感谢您的评论!