Not fully tested, and I do not know why you insisted on
<cfscript> but
here you go.
<cfscript>
function rescaleImage(curX,curY,maxX,maxY)
{
var returnStr = structNew();
//if current X is greater then maximum X
if (curX GT maxX)
{
//set return X to the maximum and adjust current Y
proportionally
returnStr.thisX = maxX;
curY = curY * (maxX/curX);
}
else
//else return current x
{
returnStr.thisX = curX;
}
//if current Y is greater then maximum Y
if (curY GT maxY)
{
// set return Y to maximum y and adjust return X
proportionally.
returnStr.thisY = maxY;
returnStr.thisX = returnStr.thisX * (maxY/curY);
}
else
{
//else return current Y
returnStr.thisY = curY;
}
return returnStr;
}
</cfscript>
<cfset adjustedImg = rescaleImage(503,2004,250,500)>
<cfdump var="#adjustedImg#">
</body>