package com.rapidftr.utilities; import java.io.IOException; import java.io.InputStream; import javax.microedition.io.Connector; import javax.microedition.io.file.FileConnection; import net.rim.device.api.math.Fixed32; import net.rim.device.api.system.Bitmap; import net.rim.device.api.system.EncodedImage; public class ImageUtility { public static Bitmap scaleImage(EncodedImage encodedImage, int requiredWidth, int requiredHeight) { int currentWidth = Fixed32.toFP(encodedImage.getWidth()); int currentHeight = Fixed32.toFP(encodedImage.getHeight()); int scaleXFixed32 = Fixed32.div(currentWidth, requiredWidth); int scaleYFixed32 = Fixed32.div(currentHeight, requiredHeight); EncodedImage image = encodedImage.scaleImage32(scaleXFixed32, scaleYFixed32); return image.getBitmap(); } public static Bitmap resizeBitmap(Bitmap image, int width, int height) { int imageWidth = image.getWidth(); int imageHeight = image.getHeight(); // Need an array (for RGB, with the size of original image) int rgb[] = new int[imageWidth * imageHeight]; // Get the RGB array of image into "rgb" image.getARGB(rgb, 0, imageWidth, 0, 0, imageWidth, imageHeight); // Call to our function and obtain rgb2 int rgb2[] = rescaleArray(rgb, imageWidth, imageHeight, width, height); // Create an image with that RGB array Bitmap temp2 = new Bitmap(width, height); temp2.setARGB(rgb2, 0, width, 0, 0, width, height); return temp2; } private static int[] rescaleArray(int[] ini, int x, int y, int x2, int y2) { int out[] = new int[x2 * y2]; for (int yy = 0; yy < y2; yy++) { int dy = yy * y / y2; for (int xx = 0; xx < x2; xx++) { int dx = xx * x / x2; out[(x2 * yy) + xx] = ini[(x * dy) + dx]; } } return out; } public static EncodedImage getBitmapImageForPath(String Path) { // String ImagePath = "file://"+ Path; String ImagePath = Path; FileConnection fconn; try { fconn = (FileConnection) Connector.open(ImagePath, Connector.READ); if (fconn.exists()) { byte[] imageBytes = new byte[(int) fconn.fileSize()]; InputStream inStream = fconn.openInputStream(); inStream.read(imageBytes); inStream.close(); EncodedImage eimg= EncodedImage.createEncodedImage( imageBytes, 0, (int) fconn.fileSize()); fconn.close(); return eimg; } }catch (IllegalArgumentException e) { return EncodedImage.getEncodedImageResource("res\\head.png") ; } catch (IOException e) { e.printStackTrace(); return EncodedImage.getEncodedImageResource("res\\head.png") ; } return null; } }