Using ColdFusion image functions to resize an image into a square thumbnail
After trying several times to resize and crop the image to fit nicely into a square I stumbled upon the function ImageScaleToFit() and that was exactly what I needed for my problem. I want to fit an image into a square thumbnail, but with the imageCrop or Resize you can't get the image to fit. :-(What I did is the following... after I found the ImageScaleToFit function I also found the ImagePaste function which will paste 1 image into the other. After thinking about this I came with the solution to first scale the image to the correct size, then make a new blank image with the imageNew() function and paste the 2 together.
With the ImagePaste() function you also need to calculate the x and y value where the image should be pasted upon the other image. See the code below for an example
The original image:
<!---Read the image into an object --->
<cfimage action="read" name="myImage" source="65.jpg">
<!--- Set the square size of the thumb --->
<cfset sq_size = 200>
<!--- Write the result to a file. --->
<cfset ImageSetAntialiasing(myImage,"on")>
<cfset ImageScaleToFit(myImage,sq_size,sq_size)>
<!--- Calculate the x and y position to paste the image --->
<cfif myImage.width GTE myImage.height>
<cfset x = 0>
<cfset y = ceiling((myImage.width - myImage.height)/2)>
<cfelse>
<cfset x = ceiling((myImage.height - myImage.width)/2)>
<cfset y = 0>
</cfif>
<cfset newimg = ImageNew("",sq_size, sq_size, "rgb", "FF0000")>
<cfset ImagePaste(newimg, myImage, x, y)>
<cfimage action="WRITETOBROWSER" source="#newimg#" format="JPG"> The result image looks like this. Picture taken from www.wickedweasel.com

15702 viewed | 6 opinion(s) | del.icio.us | Digg it | Tjarko @ 13/12/07 12:29 cet



