Это мой первый опыт программирования за долгое время, поэтому я в основном начинаю с нуля и использую coldfusion 8.
То, что я пытаюсь сделать, - это создать серию однородных миниатюрных изображений (всегда 68 X 46) из множества больших изображений, некоторого портрета, некоторого пейзажа. В обоих случаях измените размер изображения, чтобы заполнить высоту или ширину миниатюры, а затем обрежьте лишнее изображение с обеих сторон (сверху / снизу, слева / справа). Так же, как фотошоп делает по умолчанию с изменением размера холста.
Приведенный ниже код работает очень хорошо, пока размеры / соотношение исходных изображений идеальны, но я начал сталкиваться со случаями, когда код не работает. В этом случае, когда ширина изображения с измененным размером становится меньше 68.
<cfif FileExists(ExpandPath('images/gallery/thumbs/thm_'&imageMed[i].medium.XmlText)) IS false> <!--- If the thumb doesn't exist, create it. --->
<cfif imageDataThumb.width gt imageDataThumb.height >
<!--- Landscape --->
<cfset ImageResize(cfImageThumb,"","46")>
<cfset ImageCrop(cfImageThumb,(cfImageThumb.width-68)/2,0,68,46)> <!--- Crop left/right edges of images --->
<cfimage source="#cfImageThumb#" action="write" destination="images/gallery/thumbs/thm_#imageMed[i].medium.XmlText#" overwrite="yes">
<cfelse>
<!--- Portrait --->
<cfset ImageResize(cfImageThumb,"68","")>
<cfset ImageCrop(cfImageThumb,0,(cfImageThumb.height-23)/2,68,46)>
<!--- Crop top/bottom edges of images --->
<cfimage source="#cfImageThumb#" action="write" destination="images/gallery/thumbs/thm_#imageMed[i].medium.XmlText#" overwrite="yes">
</cfif>
Попытка решить эти «крайние случаи» превращает код в беспорядок. Есть ли лучший способ приблизиться к этому? Что-то в простуде или CFC?