Пропорциональное изменение размера изображения в Coldfusion 9 - PullRequest
1 голос
/ 10 ноября 2011

У меня есть функция, которая должна изменять размеры всех изображений в заданных папках (я точно не знаю, сколько, но я думаю, 2500+) и сохранять их в другой папке:

<CFSET base = expandpath("./images") />
<CFSET folders = listtoarray("folder1,folder2") />
<CFLOOP array="#folders#" index="folder">
  <CFDIRECTORY name="qImages" directory="#base#/#folder#/big/" action="list" listinfo="name" type="file" filter="*.jpg" />
  <CFLOOP query="qBilder">
    <CFIMAGE action="resize" height="" width="320" source="#base#/#folder#/big/#name#" destination="#base#/#folder#/#name#" overwrite="yes" />
  </CFLOOP>
</CFLOOP>

Интереснокак сделать это более эффективно, чем я ?!Я читал, что в CF есть 17 различных алгоритмов изменения размера изображений .Какой из них будет наиболее производительным с хорошим сочетанием качества изображения и скорости?

Ответы [ 2 ]

1 голос
/ 20 ноября 2011

Установите для своей интерполяции значение «наивысшая производительность» для изображений <= 100x100 пикселей и «наивысшее качество» или «lanczos» для остальных.Если вы создаете .jpgs, по умолчанию качество составляет 0,75, что означает 75%.Для крошечных изображений уменьшите это значение до 0,5 или менее для быстрых изображений низкого качества. </p>

Если вы хотите пропорциональное изменение размера, укажите для imageResize () ширину или высоту, но не оба.

http://cfquickdocs.com/cf9/#imageresize

1 голос
/ 10 ноября 2011

Вы можете сначала проверить производительность imageResize(). Как сказал Ян, поиграйте с «параметром интерполяции», чтобы получить качество в зависимости от скорости. Если это окажется слишком медленным или уродливым, используйте ImageMagik

...