如何使用BlackBerry SDK API扩展图像

时间:2012-08-04 13:57:56

标签: java blackberry

有人知道为什么我的image2没有在image2.scaleImage32()方法中缩放吗?

这是我的代码:

public ZoomScreen setScreen(){

     map1.getBitmap().scaleInto(tempBmp, Bitmap.FILTER_BILINEAR); 
     Graphics g = Graphics.create(tempBmp); //works
     g.drawBitmap(100, 100, bitmapImage2.getWidth(), bitmapImage2.getHeight(), bitmapImage2, 0, 0); //works
     image2 = PNGEncodedImage.encode(tempBmp); //works
     image3 = image2.scaleImage32(Fixed32.toFP(100), Fixed32.toFP(200)); // does not work
     ZoomScreen screen = new ZoomScreen(image3);// works

  return screen;

}

1 个答案:

答案 0 :(得分:0)

也许您将宽度和高度的绝对值传递给scaleImage32()方法。但这不是使用此方法的正确方法。您需要传递比例因子而不是宽度和高度的绝对值。

假设imageEncodedImage类实例,而thumbnailSide是缩放图像的一面(以像素为单位),这里的代码应该适合您:

        final int currentWidthFixed32 = Fixed32.toFP(image.getWidth());
        final int currentHeightFixed32 = Fixed32.toFP(image.getHeight());

        final int thumbnailSideFixed32 = Fixed32.toFP(thumbnailSide);

        final int scaleXFixed32 = Fixed32.div(currentWidthFixed32, thumbnailSideFixed32);
        final int scaleYFixed32 = Fixed32.div(currentHeightFixed32, thumbnailSideFixed32);

        image = image.scaleImage32(scaleXFixed32, scaleYFixed32);