我正在用coldfusion8/mysql 5.0.88做一个网站,前端是Jquery。我还使用了photoswipe.js插件,它允许在一个单独的视图层中缩放和浏览图像。
要设置可扫描图像,我需要输出
<cfoutput>
<a class="swipeMe" rel="external" href="#variables.imageSrc#">
<img src="#variables.imageSrc#" class="adaptImg ui-li-thumb" />
</a>
</cfoutput>问题是imageSrc是由用户提供的,所以在显示图像之前,我必须抓取/验证/调整图像大小,并且我需要图像的路径以进行光擦除链接。
我已经对此进行了一段时间的修改,并提出了以下解决方案:
// read img from user specs
<cfimage name="myImage" source="#bildpfad##bilddateiname#" action="read" />
<cfif IsImage(myImage) is true>
// resize
<cfscript>
ImageSetAntialiasing(myImage,"on");
variables.breite = 400;
ImageScaleToFit(myImage, variables.breite,"", "highestPerformance");
</cfscript>
// write to xml, so I can get the path
<cfxml variable="imageXml">
<cfimage quality=".5" action="writetobrowser" source="#myImage#" class="adaptImg ui-li-thumb"/
</cfxml>
<cfset variables.imageSrc = imageXml.xmlRoot.xmlAttributes.src>
// output
<cfoutput>
<a class="swipeMe" rel="external" href="#variables.imageSrc#">#imageXml#</a>
</cfoutput>
</cfif>虽然它工作正常,但应用程序和内存似乎也出现了泄漏,因为在运行该程序时,我正在丢失越来越多的内存。
问题
上述代码是否存在导致内存泄漏的明显问题?我想象这些图像正在被写入某种临时目录(CFFileservelet?)在那里呆一段时间阻止我的记忆。如果是的话,在图像搜索中处理这个问题的替代方法是什么?
谢谢!
发布于 2012-08-24 13:27:07
为什么不直接在服务器上创建一个/tmp文件夹,并在那里编写被操纵的图像,比如:
<cfset newImageName=CreateUUID()&".jpg">
<cfimage action="write" destination="/tmp/#newImageName#" source="#myImage#">然后你可以使用它:
<cfoutput>
<a class="swipeMe" rel="external" href="/tmp/#newImageName#"><img src="/tmp/#newImageName#" class="..."></a>
</cfoutput>删除临时文件的示例计划任务:
<cfdirectory action="LIST" directory="#expandpath('tmp/')#" name="tempfiles" filter="*.jpg">
<cfloop query="tempfiles">
<cfif dateadd('h',24,dateLastModified) lt now()>
<cffile action="DELETE" file="#expandpath('tmp/')##name#">
</cfif>
</cfloop>https://stackoverflow.com/questions/12109312
复制相似问题