首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >保存图像时GDI+中出现间歇性泛型错误

保存图像时GDI+中出现间歇性泛型错误
EN

Stack Overflow用户
提问于 2014-06-06 15:32:52
回答 2查看 284关注 0票数 0

我在ASP.NET 4.0中构建了一个动态图像调整web应用程序,它正在使用IIS7.5运行在Windows2008Web服务器上。

图像本身作为二进制最大字段存储在SQL 2008 R2数据库中(图像足够小,这是可行的,我们最初尝试了filestream选项,但它对我们的目的来说太慢了)

我查询数据库以作为字节数组检索"blob“,并将其加载到图像对象中,如下所示:

代码语言:javascript
复制
Dim imageOriginal as Image = Nothing
Dim imageResized as Image = Nothing

imageOriginal = FindOriginalImage()

我需要做一些事情-如果它是一个PNG,我必须画它在一个白色的画布或我得到一些非常疯狂的裸奔,如果我需要调整图像。我还可能将其缩小,可能会在其上加一个水印,并将其保存到磁盘中,然后再将其提供给最终用户。为了完成所有这些工作,我发现我必须创建第二个映像对象,以便在将其保存到磁盘之前完成一些必要的任务,因此我将原始映像复制到调整大小的对象中进行处理。见下文:

代码语言:javascript
复制
If Not imageOriginal is nothing then
    imageResized = imageOriginal

(如果在数据库中找不到图像,则对FindOriginalImage的调用将不返回值)

……所有其他的调整大小,水印等等-这个代码都能工作.

在完成了对imageResized对象所需的所有操作之后,然后运行以下行:

代码语言:javascript
复制
imageResized.Save(DestinationFile, ImageFormat.Jpeg)

大多数情况下,这样做是没有问题的,但当我尝试将文件保存到磁盘时,偶尔会出现一个GDI+泛型错误。

当然,在我处理完这两个对象之后,我也会处理这两个对象:

代码语言:javascript
复制
imageResized.Dispose()
imageOriginal.Dispose()
GC.Collect()

有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-06 15:39:29

首先尝试将图像保存到MemoryStream,然后将内存流转储到文件系统--至少可以排除文件/访问问题。

票数 0
EN

Stack Overflow用户

发布于 2014-06-06 15:35:39

一般说来,"GDI+泛型错误“通常是由于文件系统权限问题造成的。检查以确保正在运行应用程序池的上下文对要保存的文件夹具有适当的“写”权限。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24085605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档