代码之家  ›  专栏  ›  技术社区  ›  KIRAN K J

在android中将布局转换为位图时获取反转图像

  •  1
  • KIRAN K J  · 技术社区  · 11 年前

    我正在尝试使用下面的代码将我的布局转换为图像。

    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)
            {
    
            }
    

    这是我的布局

    enter image description here

    这是输出图像

    enter image description here

    造成这种情况的原因是什么?如何克服这种情况?

    2 回复  |  直到 11 年前
        1
  •  2
  •   AndiM    11 年前

    希望这将对您有所帮助:

    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替换为您的特定布局。

        2
  •  0
  •   Paweł Piecyk    11 年前

    我认为原因是JPEG只支持完全不透明的像素。正如Meghs所建议的那样,最好使用压缩到PNG。看看 compress() method documentation .