8

画像のサイズを変更できるかどうか知りたかったのです。ブラックベリーの画面に、実際のサイズが200x200で、サイズが100x100の画像を描画するとします。

ありがとう

4

8 に答える 8

10

この方法を使用すると、これを非常に簡単に行うことができますEncodedImage.scaleImage32()。幅と高さを(として)スケーリングする要素を指定する必要がありますFixed32

Fixed32これは、RIMのクラスを使用して、元の画像サイズを目的のサイズで除算することにより、幅と高さの倍率を決定するサンプルコードです。

public static EncodedImage resizeImage(EncodedImage image, int newWidth, int newHeight) {
    int scaleFactorX = Fixed32.div(Fixed32.toFP(image.getWidth()), Fixed32.toFP(newWidth));
    int scaleFactorY = Fixed32.div(Fixed32.toFP(image.getHeight()), Fixed32.toFP(newHeight));
    return image.scaleImage32(scaleFactorX, scaleFactorY);
}

幸運にもOS5.0の開発者である場合、Marcは、上記で説明したものよりもはるかに明確で用途の広い新しいAPIへのリンクを投稿しました。例えば:

public static Bitmap resizeImage(Bitmap originalImage, int newWidth, int newHeight) {
    Bitmap newImage = new Bitmap(newWidth, newHeight);
    originalImage.scaleInto(newImage, Bitmap.FILTER_BILINEAR, Bitmap.SCALE_TO_FILL);
    return newImage;
}

(当然、ニーズに基づいてフィルター/スケーリングオプションを置き換えることができます。)

于 2010-02-15T18:21:16.987 に答える
7

代替案:
BlackBerry-画面に画像を描画する
BlackBerry-画像の3D変換

于 2009-11-20T15:59:52.217 に答える
3

私はブラックベリープログラマーではありませんが、これらのリンクのいくつかがあなたを助けると信じています:

画像サイズ変更の記事
Blackberryのビットマップのサイズ変更
Blackberry画像スケーリングの質問

于 2009-11-20T11:09:27.457 に答える
3

BlackBerryによって行われるデフォルトの画像スケーリングは非常に原始的であり、一般的にあまり見栄えが良くないことに注意してください。5.0用にビルドしている場合は、バイリニアやランツォシュなどのフィルターを使用して、はるかに優れた画像スケーリングを行うための新しいAPIがあります。

于 2009-11-20T17:04:11.017 に答える
2

BlackBerry JDE 5.0以降では、scaleIntoAPIを使用できます。

于 2010-12-03T21:30:01.637 に答える
1
in this there is two bitmap.temp is holding the old bitmap.In this method you just pass
bitmap ,width,height.it return new bitmap of your choice.

  Bitmap ImgResizer(Bitmap bitmap , int width , int height){
    Bitmap temp=new Bitmap(width,height);
    Bitmap resized_Bitmap = bitmap;
    temp.createAlpha(Bitmap.HOURGLASS);
    resized_Bitmap.scaleInto(temp , Bitmap.FILTER_LANCZOS);
    return temp;
}
于 2011-12-20T11:08:15.483 に答える
0

これが関数です。または、画像のサイズを変更する方法を言うことができます。必要に応じて使用してください。

int olddWidth;
int olddHeight;
int dispplayWidth;
int dispplayHeight;

EncodedImage ei2 = EncodedImage.getEncodedImageResource("add2.png");
olddWidth = ei2.getWidth();
olddHeight = ei2.getHeight();
dispplayWidth = 40;\\here pass the width u want in pixels
dispplayHeight = 80;\\here pass the height u want in pixels again

int numeerator = net.rim.device.api.math.Fixed32.toFP(olddWidth);
int denoominator = net.rim.device.api.math.Fixed32.toFP(dispplayWidth);
int widtthScale = net.rim.device.api.math.Fixed32.div(numeerator, denoominator);
numeerator = net.rim.device.api.math.Fixed32.toFP(olddHeight);
denoominator = net.rim.device.api.math.Fixed32.toFP(dispplayHeight);
int heighhtScale = net.rim.device.api.math.Fixed32.div(numeerator, denoominator);
EncodedImage newEi2 = ei2.scaleImage32(widtthScale, heighhtScale); 
Bitmap _add =newEi2.getBitmap();
于 2011-12-07T08:07:16.757 に答える
0

私はBlackberryアプリケーション開発の初心者のためにこの回答を投稿しています。以下のコードは、URLからビットマップ画像を処理し、アスペクト比を失うことなくサイズを変更するためのものです。

   public static Bitmap imageFromServer(String url)
{
Bitmap bitmp = null;
try{
HttpConnection fcon = (HttpConnection)Connector.open(url);
int rc = fcon.getResponseCode();
if(rc!=HttpConnection.HTTP_OK)
{
    throw new IOException("Http Response Code : " + rc);            
}
InputStream httpInput = fcon.openDataInputStream();
InputStream inp = httpInput;
byte[] b = IOUtilities.streamToBytes(inp);
EncodedImage img = EncodedImage.createEncodedImage(b, 0, b.length);
bitmp = resizeImage(img.getBitmap(), 100, 100);
}
catch(Exception e)
{
Dialog.alert("Exception : " + e.getMessage());          
}
return bitmp;
}

public static Bitmap resizeImage(Bitmap originalImg, int newWidth, int newHeight)
{
    Bitmap scaledImage = new Bitmap(newWidth, newHeight);
    originalImg.scaleInto(scaledImage, Bitmap.FILTER_BILINEAR, Bitmap.SCALE_TO_FIT);
    return scaledImage;
}

メソッドresizeImageは、メソッドimageFromServer(String url)内で呼び出されます。1)サーバーからの画像はEncodedImageimgを使用して処理されます。2)ビットマップbitmp = resizeImage(img.getBitmap()、100、100); パラメータはresizeImage()に渡され、resizeImage()からの戻り値はBitmapbitmpに設定されます。

于 2013-01-06T14:56:24.453 に答える