2017-08-04 106 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

相關問題