2016-02-29 92 views
1

我在的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"> 
+0

尝试使用'CFFILE行动=“read'读取图片文件,然后调用'信息的imageinfo =(local.imageread)'。您应该能够从那里获取宽度和高度 –

+0

@Nebu您使用的是哪个操作系统?如果是Windows,我可以为您提供可与ColdFusion 6-2016一起使用的命令行替代方法,并且比本机内置函数快得多在遇到CMYK时不会抛出错误 图片)。 –

+1

@JohnWhish这不起作用。 imageInfo需要一个图像对象作为参数。 – Nebu

回答

1

如果您使用的是Windows和ColdFusion 8+执行,可以考虑使用免费的,可移植的命令行程序Exiv2和GraphicsMagic。 Exiv2可以使用命令行读取/写入EXIF数据,并且比内置的CF功能更快。

http://www.exiv2.org/

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"> 
+0

根据你的建议,我记得我曾经在过去的项目中使用ImageMagick。与GraphicsMagick非常相似。 – Nebu

+0

我选择在阅读关于性能的多个评论后对GraphicsMagick进行标准化。命令行API也更容易处理。 –