當正從我的數據庫加載我的Web服務器上我的圖片,我看到以下錯誤:GDI +一般性錯誤
我所有的代碼正在嘗試做的是加載圖像A generic error occurred in GDI+. at System.Drawing.Image.Save(Stream stream, ImageCodecInfo encoder, EncoderParameters encoderParams) at System.Drawing.Image.Save(Stream stream, ImageFormat format) at MyWeb.Helpers.ImageHandler.ProcessRequest(HttpContext context)
,任何人可以看看讓我知道我在做什麼錯了?
注 - 如果我在本地機器上測試它,但在將其部署到我的Web服務器時不起作用。
public void ProcessRequest(HttpContext context)
{
context.Response.Clear();
if (!String.IsNullOrEmpty(context.Request.QueryString["imageid"]))
{
int imageID = Convert.ToInt32(context.Request.QueryString["imageid"]);
int isThumbnail = Convert.ToInt32(context.Request.QueryString["thumbnail"]);
// Retrieve this image from the database
Image image = GetImage(imageID);
// Make it a thumbmail if requested
if (isThumbnail == 1)
{
Image.GetThumbnailImageAbort myCallback = new Image.GetThumbnailImageAbort(ThumbnailCallback);
image = image.GetThumbnailImage(200, 200, myCallback, IntPtr.Zero);
}
context.Response.ContentType = "image/png";
// Save the image to the OutputStream
image.Save(context.Response.OutputStream, ImageFormat.Png);
}
else
{
context.Response.ContentType = "text/html";
context.Response.Write("<p>Error: Image ID is not valid - image may have been deleted from the database.</p>");
}
}
錯誤發生就行了:
image.Save(context.Response.OutputStream, ImageFormat.Png);
UPDATE
我已經改變了我的代碼本,位問題仍然發生了:
var db = new MyWebEntities();
var screenshotData = (from screenshots in db.screenshots
where screenshots.id == imageID
select new ImageModel
{
ID = screenshots.id,
Language = screenshots.language,
ScreenshotByte = screenshots.screen_shot,
ProjectID = screenshots.projects_ID
});
foreach (ImageModel info in screenshotData)
{
using (MemoryStream ms = new MemoryStream(info.ScreenshotByte))
{
Image image = Image.FromStream(ms);
// Make it a thumbmail if requested
if (isThumbnail == 1)
{
Image.GetThumbnailImageAbort myCallback = new Image.GetThumbnailImageAbort(ThumbnailCallback);
image = image.GetThumbnailImage(200, 200, myCallback, IntPtr.Zero);
}
context.Response.ContentType = "image/png";
// Save the image to the OutputStream
image.Save(context.Response.OutputStream, ImageFormat.Png);
} }
謝謝。
嗨賈斯汀,我想我已經改變了我的代碼,以避免這種情況,但我仍然看到這個問題 - 你能看看我更新的問題嗎?另外,奇怪的是,這可以在我的開發盒上運行,但是當我將它部署到服務器時卻不行。 –
@JimmyC不知道,圖像**很**大嗎? GDI +似乎強加了64K的高度限制。或者,您是否知道這是否僅適用於縮略圖?你也可以確定'ThumbnailCallback'沒有拋出異常嗎? – Justin
圖像非常小。這發生在縮略圖和正常大小的圖像上。在我看來,像一個配置問題,由於它在我的本地機器上工作,但我不知道什麼類型的配置問題可能會導致此錯誤。 –