我想在旋转后保存具有相同名称和路径的图像。 我在方法保存中出错( gdi + 发生一般错误)
以下是代码:
string path = @"mypath";
Bitmap image = new Bitmap(path + aspximage.ImageUrl, true);
image.RotateFlip(System.Drawing.RotateFlipType.Rotate90FlipNone);
//The error is generated here
image.Save(path + aspximage.ImageUrl, ImageFormat.Png);
// I have added this line so that the browser can display it
aspximage.ImageUrl = aspximage.ImageUrl + "&t=" + DateTime.Now.Second;
我从硬盘中的本地路径获取图像。因为我使用 ashx处理程序所以我的imageUrl就像“Handler.ashx?n = nameimage.png”
这是Handler.ashx的代码:
public void ProcessRequest (HttpContext context) {
string imgName = context.Request.QueryString["n"];
context.Response.ContentType = "image/png";
string path = @"myPath" + imgName;
Image image = Image.FromFile(path);
image.Save(context.Response.OutputStream, ImageFormat.Png);
}
如果我删除此行
// I have added this line so that the browser can display it
aspximage.ImageUrl = aspximage.ImageUrl + "&t=" + DateTime.Now.Second;
我的代码转好,但浏览器无法重新加载我的图片。
如果我离开它,我的代码运行良好,但错误是在同一图像上 3次或更多次执行调用之后生成的。
你的建议是什么?
感谢您的帮助。
答案 0 :(得分:1)
最后我发现了错误。
我应该在上下文中保存图片后关闭文件.Response.outputStream" Handler.ashx "
为此我添加了 image.Dispose()
这里是Handler.ashx的新代码:
public void ProcessRequest (HttpContext context) {
string imgName = context.Request.QueryString["n"];
context.Response.ContentType = "image/png";
string path = @"mypath" + imgName;
Image image = Image.FromFile(path);
image.Save(context.Response.OutputStream, ImageFormat.Jpeg);
//I added this line
image.Dispose();
}