我正在尝试使用以下代码将布局转换为图片。
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)
{
}
这是我的布局
这是输出图像
这是什么原因以及如何克服这个?
答案 0 :(得分:1)
希望这会对你有所帮助:
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替换为您的特定布局。
答案 1 :(得分:0)
我认为原因是JPEG仅支持完全不透明的像素。正如Meghs所说,对PNG使用压缩会更好。看看compress() method documentation。