System.Drawing / GDI +在动态生成web图形时出错

时间:2013-07-16 16:40:54

标签: .net vb.net gdi+ gdi system.drawing

我正在为一家企业构建一个基于.NET的电子商务网站,该网站制作由客户在网站上实时创建的新颖标志。这个想法与一些你自己必须完成所有设计工作的网站有点不同 - 在这个网站上,基本上有标志组合成主题,预定的“文本区域”,客户输入他们独特的文本。然后我使用System.Drawing / GDI +在SERVER端动态构建一个图形。我发现在生成大约9,000个图形后(这个数字可能无关紧要,它可能与另一个操作行为有关),我得到一个模糊的GDI +错误,整个网站重置。我想知道是否有更好的图形例程我应该使用,因为我已经完成了我的代码,发布和清理了对象,缓存的图像因此不会反复处理相同的图像,仍然会得到错误。无论我是逐个生成图像(比如几天)还是作为一个大批量生成图像(有时会用于批量上传到其他在线商店),都会发生这种情况。

我在事件日志中看到的错误

  

错误应用程序w3wp.exe,版本7.0.6002.18005,时间戳0x49e023cf,错误模块gdiplus.dll,版本5.2.6002.18813,时间戳0x515ba857,异常代码0xc0000005,错误偏移量0x00104be6,进程ID 0x1018,应用程序启动时间0x01ce82423201ac62。

当然感觉像是记忆问题,但我找不到它。

我的代码包含了很多组件,例如:

  • 从磁盘加载基本图像并调整为“工作”大小以进行操作
  • 添加1-X个自定义文本(X由产品决定)
  • 平滑文本并按比例缩放。
  • 这些自定义文本中的每一个都可以使用不同的字体,颜色等。
  • 这些文本中的每一个都可以有一个投影(相同的文字,翻过来)
  • 在添加文字后,使用半透明图形将图像叠加到“天气”或“木纹”整个图像。

使用一些基本循环和GDI +绘图技术可以轻松完成所有这些操作。我也考虑过在客户端使用JavaScript进行此操作,但由于可以设置PER产品的所有独特选项以及服务器端特殊许可字体的使用,这将变得非常复杂。

当网站重置时,我没有看到任何大的内存泄漏甚至是内存释放。

所以我真正想要的是关于我是否应该去另一个服务器端绘图例程的意见。我无法真正复制我的代码的良好样本,因为仅绘图程序超过500行代码,但它使用了大量的DrawString,SmoothingMode,InterpolationMode,PixelOffsetMode,SetResolution等方法和属性。

欢迎您查看该网站的实际效果 - http://dev.signshop.c2itconsulting.net

0 个答案:

没有答案
相关问题