<cffunction name="bufferedResize" access="private" output="false" hint="Resize le buffer de l'image">
<cfargument name="imgBuffer" required="true" hint="Java buffer image">
<cfargument name="newWidth" type="numeric" required="false" default="100" hint="Nouvelle taille width (pixels). Defaut 100">
<cfscript>
// Regarde les dimensions originale
var imhW = arguments.imgBuffer.getWidth();
var imgH = arguments.imgBuffer.getHeight();
// Calcule scale
var scale = arguments.newWidth / imhW;
// Défini la nouvelle dimension
var scaledW = Int((scale * imhW));
var scaledH = Int((scale * imgH));
// Crée un nouvel objet image
var outBufferedImg = createJavaImg(scaledW, scaledH);
// Crée l'objet Graphics2D et défini les paramètres de dessin
jHints = createObject("java","java.awt.RenderingHints");
var jGraphics2D = arguments.imgBuffer.createGraphics();
jGraphics2D.setRenderingHint(jHints.KEY_INTERPOLATION, jHints.VALUE_INTERPOLATION_BILINEAR);
jGraphics2D.setRenderingHint(jHints.KEY_RENDERING, jHints.VALUE_RENDER_QUALITY);
jGraphics2D.setRenderingHint(jHints.KEY_COLOR_RENDERING, jHints.VALUE_COLOR_RENDER_QUALITY);
jGraphics2D.setRenderingHint(jHints.KEY_DITHERING, jHints.VALUE_DITHER_ENABLE);
jGraphics2D.setRenderingHint(jHints.KEY_ANTIALIASING, jHints.VALUE_ANTIALIAS_OFF);var jGraphics2D = getJavaGraphics2D(outBufferedImg);
var scalingQuality = createObject("java","java.awt.Image").SCALE_SMOOTH;
var scaledImg = arguments.imgBuffer.getScaledInstance(JavaCast("int", scaledW), JavaCast("int", scaledH), scalingQuality);
</cfscript>
<cftry>
<cfscript>
// Dessine l'image
jGraphics2D.drawImage(scaledImg, JavaCast("int", 0), JavaCast("int", 0), createJavaObserver());
jGraphics2D.dispose();
</cfscript>
<cfcatch type="any">
<cfthrow message="Redimensionnement de l'image a echoué #cfcatch.Message#" type="img">
</cfcatch>
</cftry>
<cfreturn outBufferedImg>
</cffunction><cffunction name="resize" access="public" output="false" returntype="boolean" hint="Resize jpg ou png image">
<cfargument name="source" type="string" required="true" hint="Path du fichier ou chemein absolu">
<cfargument name="destination" type="string" required="true" hint="Path du fichier ou chemin absolu de destination">
<cfargument name="newWidth" type="numeric" required="false" default="100" hint="Nouvelle taille width (pixels). Defaut 100">
<cfscript>
var jFileIn = createObject("java","java.io.File").init(arguments.source, true);
var jFileOut = createObject("java","java.io.File").init(arguments.destination);
// Converti l'object ficgier dans le buffer image
var imgBuffer = createObject("java","javax.imageio.ImageIO").read(jFileIn);
// Resize le buffer image
var thumb = bufferedResize(imgBuffer, arguments.newWidth);
</cfscript>
<!--- Ecrit le nouveau fichier image --->
<cfset var fileSaved=true>
<cftry>
<cfset fileSaved=createObject("java","javax.imageio.ImageIO").write(thumb, "jpg", jFileOut)>
<cfcatch type="any">
<!--- La sauvegarde a echouée. return false --->
<cfif variables.throwOnSave>
<cfthrow message="Failed to save image" type="tmt_img">
</cfif>
<cfset fileSaved=false>
</cfcatch>
</cftry>
<cfreturn fileSaved>
</cffunction>
<cfif resize(fichier_source, fichier_destination, 80)>
<p>l'image a été redimensionnée</p>
<cfelse>
<p>Erreur</p>
</cfif>