Android Bitmap 增加水印

Android Bitmap 增加水印,第1张

Android Bitmap 增加水印
  
    public static Bitmap createWaterMaskLeftTop(Bitmap src, Bitmap watermark, int paddingLeft, int paddingTop) {
        return createWaterMaskBitmap(src, watermark, dp2px(paddingLeft), dp2px(paddingTop));
    }



 
    public static Bitmap createWaterMaskRightBottom(Bitmap src, Bitmap watermark, int paddingRight, int paddingBottom) {

        if (src == null) {
            return null;
        }
        if (watermark==null){
            return null;
        }

        int width = src.getWidth();
        int height = src.getHeight();

        int screenWidth = ScreenUtils.getScreenWidth(PictureApplication.getInstance());

        float scale = width * 1f / screenWidth * 1f;
        if (scale > 1f) {
            Matrix matrix = new Matrix();
            matrix.postScale(scale, scale);
            Bitmap bitmap = Bitmap.createBitmap(watermark, 0, 0, watermark.getWidth(), watermark.getHeight(), matrix, true);
            if (BitmapHelper.isNotEmpty(watermark)&&BitmapHelper.isNotEmpty(bitmap)&&bitmap!=watermark){
                BitmapHelper.recycler(watermark);
            }

            return createWaterMaskBitmap(src, bitmap, src.getWidth() - bitmap.getWidth() - dp2px(paddingRight), src.getHeight() - bitmap.getHeight() - dp2px(paddingBottom));
        }

        return createWaterMaskBitmap(src, watermark, src.getWidth() - watermark.getWidth() - dp2px(paddingRight), src.getHeight() - watermark.getHeight() - dp2px(paddingBottom));
    }



  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();


        Bitmap newb = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);// 创建一个新的和SRC长度宽度一样的位图

        //创建一个bitmap
        //将该图片作为画布
        Canvas canvas = new Canvas(newb);
        //在画布 0,0坐标上开始绘制原始图片
        canvas.drawBitmap(src, 0, 0, null);
        //在画布上绘制水印图片
        canvas.drawBitmap(watermark, paddingLeft, paddingTop, null);
        // 保存
        canvas.save();
        // 存储
        canvas.restore();
        return newb;
    }



    
    public static int dp2px(float dp) {
        final float scale = Resources.getSystem().getDisplayMetrics().density;
        return (int) (dp * scale + 0.5f);
    }

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5693639.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存