2016-02-29 4 views
1

У меня есть следующий сценарий в ColdFusion 9:информация Cfimage очень медленно

<cfimage action="info" source="E:\....\image.png" structname="local.imageInfo"> 

Изображение на локальном диске. Это действие занимает около 4 секунд. Размер файла составляет около 800 КБ (300 dpi, png). Это кажется мне ненормальным. Есть ли способ ускорить это? Мне нужна только высота изображения и высота.

Btw делает простое действие чтения на изображение выполняется мгновенно

<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 командной строки также выглядел более удобным для работы. –