OK, most of the meat and potatoes of what I'm doing is in this cfscript block. I'm sure that it's possible to encapsulate this in a much neater fashion, I just chose not to.
<cfscript> /* Set some variables that will make it easier to work with file and server paths */ filepath = cffile.serverdirectory & "\"; imgname = cffile.serverfile; fullImgPath = filepath & imgname; thumbname = cffile.serverfilename & "_thumb." & cffile.serverfileext; fullThumbPath = filepath & thumbname; /* Invoke the image CFC */ imgObj = CreateObject("component", "lib.cfc.tmt_img"); imgObj.getDimensions("#fullImgPath#"); /* Set image width and height as variables to make them easier to work with */ imgwidth = imgObj.getwidth("#fullImgPath#"); imgheight = imgObj.getheight("#fullImgPath#"); if (imgwidth GT imgheight) { orientation = "landscape"; } else if (imgwidth LT imgheight) { orientation = "portrait"; } else { orientation = "square"; } resizewidth = imgwidth; resizethumbwidth = maxthumbdimension; divide_by_value = (imgheight / imgwidth); if ((imgwidth GTE maxdimension) AND (imgheight GTE maxdimension) AND (imgwidth GTE imgheight)) { resizewidth = maxdimension; resizethumbwidth = maxthumbdimension; diagnostics = diagnostics & "Landscape, both dimensions larger than max.<br>"; resize = "true"; } else if ((imgwidth GTE maxdimension) AND (imgheight GTE maxdimension) AND (imgwidth LTE imgheight)) { resizewidth = (maxdimension / divide_by_value); resizewidth = round(resizewidth); resizethumbwidth = (maxthumbdimension / divide_by_value); resizethumbwidth = round(resizethumbwidth); diagnostics = diagnostics & "Portrait, both dimensions larger than max.<br>"; resize = "true"; } else if ((imgwidth GTE maxdimension) AND (imgheight LTE maxdimension)) { resizewidth = maxdimension; resizethumbwidth = maxthumbdimension; diagnostics = diagnostics & "Landscape, width greater than max, height less than max.<br>"; resize = "true"; } else if ((imgwidth LTE maxdimension) AND (imgheight GTE maxdimension)) { resizewidth = (maxdimension / divide_by_value); resizewidth = round(resizewidth); resizethumbwidth = (maxthumbdimension / divide_by_value); resizethumbwidth = round(resizethumbwidth); diagnostics = diagnostics & "Portrait, width less than max, height greater than max.<br>"; resize = "true"; } else { diagnostics = diagnostics & "Both dimensions smaller than max. [ELSE]<br>"; resize = "false"; /* Image is smaller than the maxdimension in both dimensions. It won't resize the image, but what about sizing the thumbnail? */ if ((imgwidth GTE maxthumbdimension) AND (imgheight LTE maxthumbdimension)) { /* */ resizewidth = imgwidth; resizethumbwidth = maxthumbdimension; diagnostics = diagnostics & "Landscape, larger than thumbmax but smaller than max.<br>"; resize = "true"; } else if ((imgwidth LTE maxthumbdimension) AND (imgheight GTE maxthumbdimension)) { resizewidth = imgwidth; resizethumbwidth = (maxthumbdimension / divide_by_value); diagnostics = diagnostics & "Portrait, larger than thumbmax but smaller than max.<br>"; resize = "true"; } else { /* Image smaller than thumbnail in both dimensions. Don't create new thumbnail. */ diagnostics = diagnostics & "Smaller than thumbmax. [ELSE]<br>"; resize = "false"; } } /* Doublecheck the portrait/resizewidth = maxthumbdimension bug */ if ((orientation EQ "portrait") AND (resizethumbwidth EQ maxthumbdimension)) { resizethumbwidth = (maxthumbdimension / divide_by_value); /* diagnostics = diagnostics & "Bug trapped!<br>"; */ } if (resize EQ "true") { /* Scale down large images using the resizewidth value */ imgObj.resize(fullImgPath, "#fullImgPath#", resizewidth); imgObj.resize(fullImgPath, "#fullThumbPath#", resizethumbwidth); diagnostics = diagnostics & "Resize true, Image and thumbnail created.<br>"; } else if ((imgwidth LT maxthumbdimension) AND (imgheight LT maxthumbdimension)) { imgObj.resize(fullImgPath, "#fullThumbPath#", imgwidth); diagnostics = diagnostics & "Resize false, Image and thumbnail created.<br>"; } else { imgObj.resize(fullImgPath, "#fullThumbPath#", resizethumbwidth); diagnostics = diagnostics & "Resize false, but creating a properly sized thumbnail. [ELSE]<br>"; } </cfscript> If this isn't enough, I can make a zipped copy of the CFM template available. Pete ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| Find out how CFTicket can increase your company's customer support efficiency by 100% http://www.houseoffusion.com/banners/view.cfm?bannerid=49 Message: http://www.houseoffusion.com/lists.cfm/link=i:4:220443 Archives: http://www.houseoffusion.com/cf_lists/threads.cfm/4 Subscription: http://www.houseoffusion.com/lists.cfm/link=s:4 Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4 Donations & Support: http://www.houseoffusion.com/tiny.cfm/54