<cfparam name="form.upload" type="string" default="" />
<cfif len( form.upload )>
<cffile
result="upload"
action="upload"
filefield="upload"
destination="#expandPath( './' )#"
nameconflict="makeunique"
/>
<cfimage
name="photo"
action="read"
source="./#upload.serverFile#"
/>
<cfset imageScaleToFit(
photo,
500,
500
) />
<cfset imageQuality = 0.95 />
<cfset maxFileSize = (60 * 1024) />
<cfset photoFile = (
upload.serverFileName &
"-resized." &
upload.serverFileExt
) />
<cfset saveCount = 0 />
<cfloop condition="true">
<cfimage
action="write"
source="#photo#"
destination="./#photoFile#"
quality="#imageQuality#"
overwrite="true"
/>
<cfset saveCount++ />
<cfset fileSize = getFileInfo(
ExpandPath( "./#photoFile#" )
).size
/>
<cfif (fileSize gt maxFileSize)>
<cfset imageQuality -= .05 />
<cfelse>
<cfbreak />
</cfif>
</cfloop>
</cfif>
<cfoutput>
<!DOCTYPE html PUBLIC "- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>CFImage Dynamic Compression Demo</title>
</head>
<body>
<h1>
CFImage Dynamic Compression Demo
</h1>
<form
action="#cgi.script_name#"
method="post"
enctype="multipart/form-data">
<p>
<input type="file" name="upload" size="40" />
</p>
<p>
<input type="submit" value="Upload Photo" />
</p>
</form>
<cfif structKeyExists( variables, "photo" )>
<h2>
Resized Image<br />
Size: #numberFormat( fileSize, "," )#
(Max: #numberFormat( maxFileSize, "," )#)<br />
Quality: #imageQuality#<br />
Iterations: #saveCount#
</h2>
<p>
<img src="./#photoFile#" />
</p>
</cfif>
</body>
</html>
</cfoutput>