1

我正在为一家企业构建一个基于 .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,应用程序启动时间 0x02.ce 0x02.ce

确实感觉像是内存问题,但我找不到。

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

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

所有这些都可以使用一些基本的循环和 GDI+ 绘图技术轻松完成。我也考虑过在客户端使用 JavaScript 来做这件事,但是由于每个产品可以设置的所有独特选项以及服务器端的使用,特别许可的字体,这会变得非常复杂。

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

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

欢迎您也查看该网站的实际运行情况 - http://dev.signshop.c2itconsulting.net

4

0 回答 0