-5

AndroidアプリケーションからFacebookの壁に画像を投稿しようとしました。このために、レイアウトからビットマップを作成しました。これが私のコードです。

                    System.gc();
            Bitmap bitmap = Bitmap.createBitmap(
                    view.getMeasuredWidth(),
                    view.getMeasuredHeight(),
                    Bitmap.Config.ARGB_8888);
            Canvas canvas = new Canvas(bitmap);
            Drawable bgDrawable = newLinearLayout.getBackground();
            if (bgDrawable != null)
                bgDrawable.draw(canvas);
            else
                canvas.drawColor(Color.WHITE);
            view.draw(canvas);
            Matrix matrix = new Matrix();
            // resize the bit map
            matrix.postScale(1.0f, 1.0f);

            // recreate the new Bitmap
            Bitmap resizedBitmap = null;
            resizedBitmap = Bitmap.createBitmap(bitmap, 0, 0,
                    bitmap.getWidth(), bitmap.getHeight(), matrix, true);
            //Canvas resizedCanvas = new Canvas(resizedBitmap);

            if (bitmap != null) {
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                resizedBitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
                Bundle parameters = new Bundle();
                byte[] data = baos.toByteArray();
                parameters.putByteArray("picture", data);
                DataKeeper.getInstance().setBundleToPost(parameters);

            }
            bitmap.recycle();

OutOfMemory例外が表示されます。これは、画像サイズが使用可能なサイズを超えているためです。品質を損なうことなく画像のサイズを変更するにはどうすればよいですか?BitmapFactory.Optionsを使用してこれを修正しようとしました。しかし、動作しません。この例外をどのように解決できますか?

よろしくアシャ

4

3 に答える 3

0

これを使って :

BitmapFactory.Options options=new BitmapFactory.Options();
options.inSampleSize = 8;
Bitmap preview_bitmap=BitmapFactory.decodeStream(is,null,options);

詳細については、このリンクを参照してください

リンク

于 2012-08-13T10:44:49.823 に答える
0

@Zaz Gmyの考え方は正しいですが、の値はすべての画像で一定(8)である必要
はないと思います。inSampleSize

これはもちろん機能しますが、同じスケール係数= 8で異なる解像度の異なる画像をスケーリングすると、一部の画像の品質が目に見えて低下します。

代わりに、ターゲットと画像inSimpleSizeに基づいて生成する必要があります。widthheight

Androidのドキュメントには、この問題に対処する方法に関する優れた記事が記載されています。

于 2012-08-13T10:53:06.093 に答える
0

このチュートリアルを確認し、サンプルプロジェクトをダウンロードしてください。これで問題が解決します。

http://developer.sonymobile.com/wp/2011/06/27/how-to-scale-images-for-your-android%E2%84%A2-application/

于 2012-08-13T11:57:02.280 に答える