I need to resize an image based on it's longest side, e.g. longest side - which can be width or height - should be only 100 pixels long.
Currently I am using this method:
private Image resizeImageByLongestSide(File imageFile, int lengthLongestSide)
{
String uri ="file:" + imageFile.getAbsolutePath();
Image image = new Image(uri); // raed to determine width/height
// read image again for resizing
if(image.getWidth() >= image.getHeight())
return new Image(uri, lengthLongestSide, 0, true, false);
else
return new Image(uri, 0, lengthLongestSide, true, false);
}
So, first the image has to be read by disk to figure out which side is the longest side, than it has again to be read from the disk, because resizing seems only possible by using the Image constructor... Any hint/improvement on this? Thanks :-)
invariant was close to the final solution, credits for the final solution go to l2p in the oracle forum:
Bugfix:
Transparency is lost with the current approach, because default control (herE: imageview) background is white. screenshot of transparency (from our image) on white gives white, so we loose the original transparency. fix for this: set the background itself to transparent.
So, the fixed code:
Hell, tricky this stuff ;-)
all you need is ImageView
load image one time in memory ,and then do manipulation on imageview when ever u need .
Sample Code :