Cfimage信息很慢
我在的ColdFusion 9以下脚本:Cfimage信息很慢
<cfimage action="info" source="E:\....\image.png" structname="local.imageInfo">
的图像是一个本地驱动器上。这个动作大约需要4秒。文件大小约为800kb(300 dpi,png)。这对我来说似乎不正常。有没有办法加快速度?我只需要图像的高度和高度。
顺便说一句做的图像在一个简单的读取操作将被立即
<cffile action="read" FILE="E:\....\image.png" VARIABLE="local.imageread">
如果您使用的是Windows和ColdFusion 8+执行,可以考虑使用免费的,可移植的命令行程序Exiv2和GraphicsMagic。 Exiv2可以使用命令行读取/写入EXIF数据,并且比内置的CF功能更快。
GraphicsMagick工具是在转换,调整大小,裁剪,旋转,生成缩略图,读取CMYK图像时不引发错误等
http://www.graphicsmagick.org/
我写快得多ColdFusion 8-2016 +自定义标签作为可移植命令行程序的包装。
http://gamesover2600.tumblr.com/post/139435793234/coldfusion-udf-for-exiv2-faster-exif-image
<CFSET ImageFilePath = "c:\test.jpg">
<CFDUMP VAR="#Exiv2(imageFilePath)#">
http://gamesover2600.tumblr.com/post/125766251344/graphicsmagick-coldfusion-custom-tag
<CFSET ImageIn = "c:\test.jpg">
<!--- Identify - Get basic info (Exiv2 is better/faster) --->
<CF_GraphicsMagick action="Identify" infile="#ImageIn#" result="GM_Identify">
<CFDUMP VAR="#GM_Identify#" label="GM_Identify">
<!--- Optimize (common settings to reduce filesize) --->
<CF_GraphicsMagick action="Optimize" infile="#ImageIn#" outfile="#replace(ImageIn,'.jpg','_optimize.jpg')#" result="GM_Optimize">
<!--- ResizeWidth (Resize to defined width --->
<CF_GraphicsMagick action="ResizeWidth" infile="#ImageIn#" width="200" outfile="#replace(ImageIn,'.jpg','_resizeWidth.jpg')#" result="GM_ResizeWidth">
<!--- AspectCrop (Similar to ImageUtils.cfc) --->
<CF_GraphicsMagick action="AspectCrop" Infile="#ImageIn#" outfile="#replace(ImageIn,'.jpg','_aspectCrop.jpg')#" width="100" height="100" quality="90" result="aspectCrop">
根据你的建议,我记得我曾经在过去的项目中使用ImageMagick。与GraphicsMagick非常相似。 – Nebu
我选择在阅读关于性能的多个评论后对GraphicsMagick进行标准化。命令行API也更容易处理。 –
尝试使用'CFFILE行动=“read'读取图片文件,然后调用'信息的imageinfo =(local.imageread)'。您应该能够从那里获取宽度和高度 –
@Nebu您使用的是哪个操作系统?如果是Windows,我可以为您提供可与ColdFusion 6-2016一起使用的命令行替代方法,并且比本机内置函数快得多在遇到CMYK时不会抛出错误 图片)。 –
@JohnWhish这不起作用。 imageInfo需要一个图像对象作为参数。 – Nebu