Android将view转换为黑白图片

 private Bitmap testAsBitMap(View view) {
        TextPaint textPaint = new TextPaint();
        textPaint.setColor(Color.CYAN);
//        StaticLayout  layout = new StaticLayout(s,textPaint,50,
//                Layout.Alignment.ALIGN_NORMAL, 1.3f, 0.0f, true);
//        Bitmap bitmap = Bitmap.createBitmap(layout.getWidth() + 20,
//                layout.getHeight() + 20, Bitmap.Config.ARGB_8888);
//        Canvas canvas = new Canvas(bitmap);
//        canvas.translate(10, 10);
//        canvas.drawColor(Color.WHITE);
//
//        layout.draw(canvas);
//        Log.d("textAsBitmap",
//                String.format("1:%d %d", layout.getWidth(), layout.getHeight()));
//        Log.d("1111111","#######");
        view.setDrawingCacheEnabled(true);

        view.buildDrawingCache();

        Bitmap bitmap=view.getDrawingCache();
        Canvas c=new Canvas(bitmap);

        c.drawColor(Color.WHITE);
        int w=view.getWidth();

        int h=view.getHeight();

/** 如果不设置canvas画布为白色,则生成透明 */

        view.layout(0,0, w,h);

        view.draw(c);




       return( convertTOBlackWrite(bitmap));


    }
}
private static Bitmap convertTOBlackWrite(Bitmap bmp) {

      int width = bmp.getWidth();
      int height = bmp.getHeight();
      int[] pixels = new int[width * height];
      bmp.getPixels(pixels, 0, width, 0, 0, width, height);
      int alpha = 0xFF << 24;
      for (int i = 0; i < height; i++) {
          for (int j = 0; j < width; j++) {
              int grey = pixels[width * i + j];

              // 分离三原色
              int red = ((grey & 0x00FF0000) >> 16);
              int green = ((grey & 0x0000FF00) >> 8);
              int blue = (grey & 0x000000FF);

              // 转化成灰度像素
              grey = (int) (red * 0.3 + green * 0.59 + blue * 0.11);
              grey = alpha | (grey << 16) | (grey << 8) | grey;
              pixels[width * i + j] = grey;
          }
      }
      // 新建图片
      Bitmap newbmp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
      newbmp.setPixels(pixels, 0, width, 0, 0, width, height);
      Bitmap resizeBmp = ThumbnailUtils.extractThumbnail(newbmp, width,
              height);

      return resizeBmp;
  }


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值