1

以下のコードを使用して、レイアウトを画像に変換しようとしています。

LinearLayout rlpage = (LinearLayout)findViewById(R.id.rlpage);
rlpage.setDrawingCacheEnabled(true);
Bitmap viewBitmap = rlpage.getDrawingCache();
ByteArrayOutputStream baos = new ByteArrayOutputStream();  
viewBitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
 byte[] toSend = baos.toByteArray();  
        try {
            fileOutputStream.write(toSend);
            fileOutputStream.flush();
            fileOutputStream.close();
        }
        catch(Exception e)
        {

        }

これが私のレイアウトです

ここに画像の説明を入力

これは出力画像です

ここに画像の説明を入力

これの理由とこれを克服する方法は何ですか?

4

2 に答える 2

2

これがあなたに役立つことを願っています:

image_view.setDrawingCacheEnabled(true);
            Bitmap bmp =Bitmap.createBitmap(image_view.getDrawingCache());
            image_view.setDrawingCacheEnabled(false);

            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            bmp.compress(Bitmap.CompressFormat.PNG, 100, baos);
            byte[] image = baos.toByteArray();

image_view を特定のレイアウトに置き換えることができます。

于 2013-04-11T05:27:00.193 に答える
0

その理由は、JPEG が完全に不透明なピクセルしかサポートしていないためだと思います。Meghs が示唆したように、PNG への圧縮を使用する方がよいでしょう。compress() method documentationを見てください。

于 2013-04-11T05:38:23.367 に答える