2017-08-04 105 views
1

我想在旋转后保存具有相同名称和路径的图像。 我有在梅索德错误保存(发生一般性错误GDI +发生了一般性错误gdi + c#

下面的代码:

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的代码 “Handler.ashx N = nameimage.png?”:

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

你正在使用哪个版本的DevExpress?这个问题可能不会在我们这边重演。你可以提供一个小样本应用程序来重现行为吗?很容易确定问题出在您的应用程序或控件中。 DevExpress支持是最好的地方问一个问题,看起来像控制错误,而不是应用程序错误.. –

+0

嗨,感谢您的回复, 问题是不是在DevExpress控制,即使我改变了另一个控制asp我仍然有同样的错误。 仅当我在图像URL中添加** DateTime.Now.Second **并且仅在相同图像上执行3次或更多的执行调用后才会生成错误。 如果我删除** DateTime.Now.Second **浏览器不能再重新加载我的图像,导致url图像没有改变。 你能告诉我关于另一种解决方案来旋转图像90°并将其保存在我的路径,并再次在JS(客户端)或(服务器端)重新加载它吗? –

+0

在保存的图像上进行旋转操作后,进行ajax调用,返回图像格式为base64的字符串。 –

回答

0

最后我发现了错误。

我应该关闭该文件一旦我已经保存在context.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(); 
} 
+0

更好的做法是将整个图像处理包装在'using'块中。 – Nyerguds

相关问题