2016-02-29 38 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也更容易處理。 –