4

カスタム ImageView を使用しています。その onDraw では、キャンバスを使用して、ユーザーのタッチに基づいて線やビットマップを描画するような処理を行います。

ユーザーが画像を保存したいときに結果のスナップショットを保存するには、drawingCache を使用します。

imageView.setDrawingCacheEnabled(true;
Bitmap.createBitmap(imageView.getDrawingCache(), 0, 0, 
       imageView.getHeight(), imageView.getWidth(),
       matrix, true).compress(CompressFormat.JPEG, 95,
       new FileOutputStream(file));

もちろん、ユーザーが保存を押している間、これを使用して実際の画像を取得できますが、画像にはimageViewで行われた処理は含​​まれていません。

Bitmap bmp = ((BitmapDrawable)imageView.getDrawable()).getBitmap();

Bitmap.createBitmap(bmp, 0, 0, 
        bmp.getWidth(), bmp.getHeight(),
        matrix, true).compress(CompressFormat.JPEG, 95,
                    new FileOutputStream(file));

問題: 保存される画像のサイズは、フルスクリーンの imageView のサイズですが、デバイスによって異なります。画面サイズが小さい携帯電話の場合、240 X 320 まで下がります。

質問:

を。デバイスの画面サイズに関係なく、まともなサイズの画像を取得することは可能ですか?

b. カスタム ImageView で使用されている画像に対して直接画像処理を行うことは可能ですか?

期待してありがとう!

何かご意見は?

4

2 に答える 2

0

使用できます

    Bitmap.createScaledBitmap(Bitmap b, int newWidth, int newHieght, boolean filter);

リソースからビットマップを取得するには

     Bitmap image = BitmapFactory.decodeResource(..)

その後、使用できます

    ImageView.setImageBitmap(Bitmap bm)

新しいビットマップをイメージビューに設定するには

于 2011-05-31T13:01:47.710 に答える