variables.source_File = CreateObject( "java", "java.io.File" ); variables.source_File.init( JavaCast( "string", attributes.source )); variables.source_ImageIO = CreateObject( "java", "javax.imageio.ImageIO" ); variables.source_Image = variables.source_ImageIO.read( variables.source_File ); // create an object to hold the new image. variables.destination_Image = CreateObject( "java", "java.awt.image.BufferedImage" ); variables.destination_Image.init( JavaCast( "int", Int( variables.source_Image.getWidth() * variables.scale )), JavaCast( "int", Int( variables.source_Image.getHeight() * variables.scale )), variables.destination_Image.TYPE_INT_RGB ); // create a RenderingHints object used to reference KEY and VALUE // variables for defining hints in the rendering process variables.RenderingHints = CreateObject( "java", "java.awt.RenderingHints" ); // create the Graphics2D object where the image will be rendered. variables.destination_Graphics2D = variables.destination_Image.createGraphics(); // define how the image will be scaled variables.destination_Graphics2D.scale( JavaCast("double", variables.scale ), JavaCast( "double", variables.scale )); // apply rendering hints to the Graphics2D object variables.destination_Graphics2D.setRenderingHint( variables.RenderingHints.KEY_INTERPOLATION, variables.RenderingHints.VALUE_INTERPOLATION_BICUBIC ); variables.destination_Graphics2D.setRenderingHint( variables.RenderingHints.KEY_ANTIALIASING, variables.RenderingHints.VALUE_ANTIALIAS_ON ); variables.destination_Graphics2D.setRenderingHint( variables.RenderingHints.KEY_TEXT_ANTIALIASING, variables.RenderingHints.VALUE_TEXT_ANTIALIAS_ON ); variables.destination_Graphics2D.setRenderingHint( variables.RenderingHints.KEY_RENDERING, variables.RenderingHints.VALUE_RENDER_QUALITY ); variables.destination_Graphics2D.setRenderingHint( variables.RenderingHints.KEY_COLOR_RENDERING, variables.RenderingHints.VALUE_COLOR_RENDER_QUALITY ); // draw the image variables.destination_Graphics2D.drawImage( variables.source_Image, CreateObject( "java", "java.awt.geom.AffineTransform" ).init(), CreateObject("java", "java.awt.Container").init() ); // free resources variables.destination_Graphics2D.dispose(); // create objects needed to output the final image variables.destination_ImageIO = CreateObject( "java", "javax.imageio.ImageIO" ); variables.destination_File = CreateObject( "java", "java.io.File" ); variables.destination_FileImageOutputStream = CreateObject( "java", "javax.imageio.stream.FileImageOutputStream" ); variables.destination_IIOImage = CreateObject( "java", "javax.imageio.IIOImage" ); // change the compression/quality attribute of the JPEG imate writer variables.Iterator = variables.destination_ImageIO.getImageWritersByFormatName( "jpeg" ); variables.ImageWriter = variables.Iterator.next(); variables.ImageWriteParam = variables.ImageWriter.getDefaultWriteParam(); variables.ImageWriteParam.setCompressionMode( variables.ImageWriteParam.MODE_EXPLICIT ); variables.ImageWriteParam.setCompressionQuality( JavaCast( "double", attributes.quality )); // prepare to write the file variables.destination_File.init( variables.destination ); variables.destination_File.delete(); variables.destination_FileImageOutputStream.init( variables.destination_File ); variables.ImageWriter.setOutput( variables.destination_FileImageOutputStream ); variables.ImageTypeSpecifier = CreateObject( "java", "javax.imageio.ImageTypeSpecifier" ); variables.ImageTypeSpecifier.init( variables.destination_Image ); variables.IIOMetadata = variables.ImageWriter.getDefaultImageMetadata( variables.ImageTypeSpecifier, variables.ImageWriteParam ); variables.destination_IIOImage.init( variables.destination_Image, CreateObject( "java", "java.util.ArrayList" ).init() , variables.IIOMetadata ); // write the image variables.ImageWriter.write( variables.IIOMetadata, variables.destination_IIOImage, variables.ImageWriteParam ); // free resources variables.ImageWriter.dispose(); variables.destination_FileImageOutputStream.flush(); variables.destination_FileImageOutputStream.close();