android 图片照相 添加水印

图片选择和图片照相功能。

图片选择和调用 照相机。进行 知乎 matisse 进行了修改,适配了andorid10
下载地址
https://gitee.com/OptimisticDevelopers/app/tree/master/libs

使用方法

点击使用
 binding.buttonTake.setOnClickListener {
            MatissePhotoManager.getInstance().with(this)
                .setCallback(object : MatissePotoScanCallback<ArrayList<String>> {
                    override fun onCompleted(p0: ArrayList<String>) {
回调方法
                        println(p0.toString())
                    }

                    override fun onError(p0: Throwable?) {
                        TODO("Not yet implemented")
                    }

                    override fun onCancel() {
                        TODO("Not yet implemented")
                    }

                })
                // 从图库里面 图片只能选择一张
                .startPhotograph(1)
                // 从图库里面 视频 只能选择一张
                .startVideo(1)
               // 照相机,缩略图 (这个有个bug )
                .startCamera()
                //调用照相机
                .startPhotoCamera()
        }

这个也需要加上

  override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        MatissePhotoManager.getInstance().with(this).onActivityResult(requestCode, resultCode, data)
    }

以上需要权限,需要权限,权限;;

开始获取图片,添加水印

https://github.com/Yuhoon/WaterMask 这个有个方法。但是不是自己自定义 的。

最终结果


image.png

主要方法


 /**
     * 图片上绘制文字
     *
     * @param bitmap
     * @param text
     * @param paint
     * @param paddingLeft
     * @param paddingTop
     * @return
     */
    private static Bitmap drawTextToBitmap(Bitmap bitmap, String text, Paint paint,
                                           int paddingLeft, int paddingTop) {
        Bitmap.Config bitmapConfig = bitmap.getConfig();
        paint.setAlpha(100);
        paint.setDither(true); // 获取跟清晰的图像采样
        paint.setFilterBitmap(true);// 过滤一些
        if (bitmapConfig == null) {
            bitmapConfig = Bitmap.Config.ARGB_8888;
        }
        bitmap = bitmap.copy(bitmapConfig, true);
        Canvas canvas = new Canvas(bitmap);

        canvas.drawText(text, paddingLeft, paddingTop, paint);
        return bitmap;
    }

  @param paddingLeft
  @param paddingTop

是左边的位置和上面的位置。。。

 Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
        paint.setColor(color);
        paint.setTextSize(size);
画笔设置,主要设置颜色和字体大小

文字大小的时候,我还 天真的以为他得 用dp转px或sp。都是很小的,直接写大小反而对了。
获取颜色。getResource.getColor 或 ContextCompat.getColor( 来获获取。

剩下就行bitmap 的 之间的流转了。

照相获取bitmap或uri 以及file
这个三个 东东总是,获取的时候,保存的时候,然后互相转换。
互相转换 了

这样就会牵动android 版本。变化的处理。

以及,图片是不是要进行图库里面更新一下呢?

还有保存地方的处理,缓存到图库里面更新移动处理。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容