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() 方法文档

于 2013-04-11T05:38:23.367 回答