图片选择和图片照相功能。
图片选择和调用 照相机。进行 知乎 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 版本。变化的处理。
以及,图片是不是要进行图库里面更新一下呢?
还有保存地方的处理,缓存到图库里面更新移动处理。