2010-12-11 49 views
1

BlackBerryアプリケーションは、Webサービスから画像を取得し、その画像をサムネイルとして表示する必要があります。誰も私にこれを達成するためのアイデアを与えることができますか?BlackBerryで拡大/縮小画像を表示

答えて

1

このコードは、

 connection = (HttpConnection) Connector.open(fullUrl.toString(), 
      Connector.READ_WRITE, true); 


     InputStream is = hc.openInputStream(); 

     DataInputStream dis = new DataInputStream(is); 
     ByteArrayOutputStream bStrm = new ByteArrayOutputStream(); 

     int ch; 
     while ((ch = dis.read()) != -1) { 
      // System.out.println((char) ch); 
      // msg = msg + (char) ch; 
      bStrm.write(ch); 
     } 
     bb = bStrm.toByteArray(); 

これは、WebサービスのURLからバイト配列を生成します助けることができます。ここではbbはバイト配列です。

BBの画像を扱うクラスは2つあります。 EncodedImageおよびBitmapは、どちらもバイト配列からイメージを生成するコンストラクタを持っています。私は、ビットマップを使用することをお勧めします。

+0

おかげで多くのことを – user469999

3

私はBBに全く慣れていませんが、誰もあなたの質問に答えていないので、EncodedImageクラスをチェックしてください。scaleImage32()メソッドはスケールされたバージョンを返します。

+0

おかげで確かにあれば、ちょうどマイケルの応答に追加する私はきっと解決 – user469999

+0

+1と親指を、それをチェックアウトしますあなたはサーバー上でスケールすることはできませんし、デバイスでそれを行う必要があります、あなたはBitmap.scaleInto()を使用してより良い品質のスケーリングを行う5.0 APIを使用することができます – Prasham

5

EncodedImageとscaleImage32()を使用することについてpetteriが正しいです。具体的には、createEncodedImage(byte[] data, int offset, int length)に、Webサービスから返されたバイト数を使用します。

scaleImage32はint型の引数を取るが、より広く知られている浮動小数点数とは異なり、固定小数点数であることに注意してください。あなたが望む固定小数点値を取得するには、Fixed32

のユーティリティメソッドを使用します。最後に、BlackBerryアプリケーションで元のイメージを必要としない場合は、Webサービスがスケーリングを行う場合に全体的な操作性が向上します。これにより、デバイスに転送されるバイト数が削減され、イメージを拡大縮小するためにデバイス上で実行される計算が削減されます。 scaleImage32()はかなり基本的なアルゴリズムを使用しているため、サーバ上でのスケーリングはスケーリングされたイメージの品質を高めます。 reply..iため

+1

を試してみます...提案のためにアップ@petteri :) –

+0

ありがとうたくさん...私は確かに解決策を試してみる – user469999

関連する問題