Android 解决小米手机添加图片水印后显示黑边的问题

2023-01-09  本文已影响0人  我爱田Hebe

背景

 /**
  * 绘制水印图片
  *
  * @param src         原图
  * @param watermark   水印图片
  * @param paddingLeft 水印图片 向左距离
  * @param paddingTop  水印图片 向上距离
  * @return 添加水印后的图片
  */
 private static Bitmap createWaterMaskBitmap(Bitmap src,
                                             Bitmap watermark,
                                             int paddingLeft,
                                             int paddingTop) {
     if (src == null) {
         return null;
     }
     //位图的宽度
     int width = src.getWidth();
     //位图的高度
     int height = src.getHeight();
     //创建一个新的和SRC长度宽度一样的位图
     Bitmap newBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
     //将该图片作为画布
     Canvas canvas = new Canvas(newBitmap);
     //在画布 0,0坐标上开始绘制原始图片
     canvas.drawBitmap(src, 0, 0, null);
     //在画布上绘制水印图片
     canvas.drawBitmap(watermark, paddingLeft, paddingTop, null);
     // 保存
     canvas.save();
     // 存储
     canvas.restore();
     return newBitmap;
 }

不尽如意解决方案 ,总归是解决了,不是遗留bug😁

遗憾的是没有找到获取这个黑边宽度和高度的方法

     /**
      * 绘制水印图片
      *
      * @param src         原图
      * @param watermark   水印图片
      * @param paddingLeft 水印图片 向左距离
      * @param paddingTop  水印图片 向上距离
      * @return 添加水印后的图片
      */
     private static Bitmap createWaterMaskBitmap(Bitmap src,
                                                 Bitmap watermark,
                                                 int paddingLeft,
                                                 int paddingTop) {
         if (src == null) {
             return null;
         }
         int width = src.getWidth();
         int height = src.getHeight();
 
         //解决小米手机绘制有黑边的问题
         if (RomUtils.isXiaomi()) {
             //LogUtils.iTag("状态栏和,导航栏高度->",BarUtils.getStatusBarHeight(),","+BarUtils.getNavBarHeight());
             width = width - 25;
             height = height - 30;
         }
 
         //创建一个新的和SRC长度宽度一样的位图
         Bitmap newBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
         //将该图片作为画布
         Canvas canvas = new Canvas(newBitmap);
         //在画布 0,0坐标上开始绘制原始图片
         canvas.drawBitmap(src, 0, 0, null);
         //在画布上绘制水印图片
         canvas.drawBitmap(watermark, paddingLeft, paddingTop, null);
         // 保存
         canvas.save();
         // 存储
         canvas.restore();
         return newBitmap;
     }

修复后的图片


作者:JiaAndroid
链接:https://juejin.cn/post/7130421617997381646

上一篇 下一篇

猜你喜欢

热点阅读