variables.modelMapping = arguments.modelMapping;
//variables.jpegFile = arguments.jpegFile;
variables.processedBufferedImage = false;
return this;
var jpegCodec = false;
var fileInputStream = false;
var decoder = false;
//check to see if current jpg has already been buffered
if(variables.processedBufferedImage neq variables.jpegFile) {
variables.processedBufferedImage = variables.jpegFile;
//Jpeg Codec
jpegCodec = createObject("java", "com.sun.image.codec.jpeg.JPEGCodec");
//file open
fileInputStream = createObject("java", "java.io.FileInputStream").init(variables.jpegFile);
//decodes the JPEG
decoder = jpegCodec.createJPEGDecoder(fileInputStream);
//give us an image to scale
variables.image = decoder.decodeAsBufferedImage();
};
var scaledImage = "";
var BufferedImage = "";
var imageHeight = getHeight();
var imageWidth = getWidth();
var sizeRatio = imageWidth/imageHeight;
//figure out if the photo is portrait or landscape make the larger equal to the max thumb size given in agruments
if (imageWidth gte imageHeight) {
imageWidth = arguments.size;
imageHeight = round(arguments.size/sizeRatio);
} else {
imageWidth = round(arguments.size * sizeRatio);
imageHeight = arguments.size;
};
//create a scaled image
scaledImage = variables.image.getScaledInstance(JavaCast("int", imageWidth), JavaCast("int", imageHeight), image.SCALE_SMOOTH);
//create a new BufferedImage
BufferedImage = createObject("java", "java.awt.image.BufferedImage").init(JavaCast("int", imageWidth), JavaCast("int", imageHeight), image.TYPE_INT_RGB);
//create output JPEG file
writeOutputJPEG(arguments.writelocation,arguments.jpegQuality,scaledImage,BufferedImage);
var scaledImage = "";
var BufferedImage = "";
var imageHeight = getHeight();
var imageWidth = getWidth();
var sizeRatio = imageWidth/imageHeight;
//resize based on width
imageWidth = arguments.width;
imageHeight = round(arguments.width/sizeRatio);
//create a scaled image
scaledImage = variables.image.getScaledInstance(JavaCast("int", imageWidth), JavaCast("int", imageHeight), image.SCALE_SMOOTH);
//create a new BufferedImage
BufferedImage = createObject("java", "java.awt.image.BufferedImage").init(JavaCast("int", imageWidth), JavaCast("int", imageHeight), image.TYPE_INT_RGB);
//create output JPEG file
writeOutputJPEG(arguments.writelocation,arguments.jpegQuality,scaledImage,BufferedImage);
var graphics = false;
var encoder = false;
var param = false;
var jpegOutputQuality = arguments.jpegQuality;
var newBufferedImage = arguments.BufferedImage;
//Jpeg Codec
var jpegCodec = createObject("java", "com.sun.image.codec.jpeg.JPEGCodec");
//output for file
var outputStream = createObject("java", "java.io.FileOutputStream").init(arguments.outputFileNameAndLocation);
//turn jpeg quality from 1-100 range to 0-1 range and cast as float
jpegOutputQuality = JavaCast("float",(jpegOutputQuality/100));
//draw the image into the buffered image
graphics = newBufferedImage.createGraphics();
graphics.drawImage(arguments.scaledImage, 0, 0, Javacast("null", ""));
//encode it
encoder = jpegCodec.createJPEGEncoder(outputStream);
//create quality param
param = encoder.getDefaultJPEGEncodeParam(newBufferedImage);
//assign JPG quality 0-1
param.setQuality(jpegOutputQuality,false);
//set JPG quality
encoder.setJPEGEncodeParam(param);
//encode
encoder.encode(newBufferedImage);
//close output stream
outputStream.close();
var javaLoader = "";
var JpegMetadataReader = "";
var JpegMetadata = "";
var JpegDirectories = "";
var currentDirectory = "";
var currentTag = "";
var tags = "";
var paths = ArrayNew(1);
var jpegExif = structNew();
//create new EXIF object
var Exif = newExif();
//read jpeg file
var photoFile = createObject("java","java.io.File").init(arguments.jpegFile);
//set the path
paths[1] = expandPath("photoblogfiles\model\com\drew\metadata\exif\metadata-extractor-2.3.1.jar");
//create the loader
javaLoader = createObject("component", "#variables.modelMapping#.model.com.compoundtheory.javaloader.JavaLoader").init(paths);
//create the JpegMetadataReader instace
JpegMetadataReader = javaLoader.create("com.drew.imaging.jpeg.JpegMetadataReader");
//Read jpg file
JpegMetadata = JpegMetadataReader.readMetadata(photoFile);
//get directory iterator
JpegDirectories = jpegMetadata.getDirectoryIterator();
if (rotateDegrees neq 0 or flip neq false) {
//only create imagecfc object if we need to
imagecfc = createObject("component","#variables.modelMapping#.model.com.imagecfc.image");
//rotoate if needed
if (rotateDegrees neq 0) {
rotate = imagecfc.rotate(variables.image,"","",rotateDegrees);
variables.image = rotate.img;
}
//flip if needed
if (flip neq false) {
if (flip eq "horizontal") {
//flip horiz
flipImage = imagecfc.flipHorizontal(variables.image,"","");
} else if (flip eq "vertical") {
//flip vert
flipImage = imagecfc.flipVertical(variables.image,"","");
};
variables.image = flipImage.img;
}
}