これはかなり久しぶりのプログラミングなので、基本的にゼロから始めて、coldfusion 8 を使用しています。
私がやろうとしているのは、さまざまな大きな画像、ポートレート、ランドスケープから一連の均一なサムネイル画像 (常に 68 X 46) を作成することです。どちらの場合も、サムネイルの高さまたは幅を満たすように画像のサイズを変更し、余分な画像を両側 (上/下、左/右) から均等にトリミングします。Photoshop がデフォルトでキャンバスのサイズを変更するのと同じように。
以下のコードは、ソース イメージの寸法/比率が完璧である限り非常にうまく機能しますが、コードが失敗するケースに遭遇し始めました。この場合、サイズ変更された画像の幅が最終的に 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 の何か?