Namespaces

Variants
Actions

Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.

Revision as of 06:56, 4 June 2009 by tanjaluodes (Talk | contribs)

How to scale an Image to the screen size in Java ME

From Wiki
Jump to: navigation, search

Screens22.jpg

If we want to use an image as background in a J2ME application, we have the problem that we must to have one image for each different size screen. Another approach is to have only one image and fit it to all screen sizes.

In this article I will describe an algorithm to do that.

Method Specification

Method Name CreateScaledImage
Parameters
imgOldImage Image that we have to fit
iNewWidth The new witdth of the image
iNewHeight The new height of the image
Return Value
New image with the new size

Source file

public static Image CreateScaledImage( Image imgOldImage, int iNewWidth, int iNewHeight  )
{
 
Image imgNewImage = null;
final int iOldWidth = imgOldImage.getWidth();
final int iOldHeight = imgOldImage.getHeight();
 
int iOldRGBArray[] = new int[iOldWidth * iOldHeight];
 
imgOldImage.getRGB( iOldRGBArray, 0, iOldWidth, 0, 0, iOldWidth, iOldHeight);
 
int iNewRGBArray[] = new int[iNewWidth * iNewHeight];
 
for (int yy = 0; yy < iNewHeight; yy++)
{
int dy = yy * iOldHeight / iNewHeight;
 
for (int xx = 0; xx < iNewWidth; xx++)
{
int dx = xx * iOldWidth / iNewWidth;
 
iNewRGBArray[(iNewWidth * yy) + xx] = iOldRGBArray[(iOldWidth * dy) + dx];
}
}
 
imgNewImage = Image.createRGBImage(iNewRGBArray, iNewWidth, iNewHeight, true);
 
return imgNewImage;
 
}

Example

We could use this method in a Canvas Object in this way:

public class MyCanvas extends GameCanvas
{
private Image objBKGImage = null;
 
public void paint(Graphics g)
{
 
 
iViewH = this.getHeight();
iViewW = this.getWidth();
 
 
 
// load the background image
if (objBKGImage== null)
{
try
{
 
objBKGImage = Image.createImage("/res/Logo_150_53.png");
 
objBKGImage = CreateScaledImage(objBKGImage, iViewW, iViewH)
 
} catch (IOException ex)
{
ex.printStackTrace();
}
}
 
 
 
// draw background
if (objBKGImage!= null)
g.drawImage(objBKGImage,
(int)iViewW / 2,
(int)iViewH / 2,
Graphics.VCENTER | Graphics.HCENTER );
 
}
}

microedition 19:39, 28 August 2008 (EEST) -- http://microedition.biz

101 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×