当前位置:   article > 正文

android开发给图片添加水印,水印中包含图片或者图标_android pictureselector 设置水印

android pictureselector 设置水印

之前写过一篇文章,给图片增加水印,不过那个是增加纯文本水印,今天介绍的是以图片叠加的那个是来增加水印。

国际惯例,上代码:

  1. private String getWaterMask(String pic) {
  2. Bitmap bitmap = ImageUtil.fileInputStream(pic);
  3. int degree = ImageLoadUtil.readPictureDegree(pic);
  4. if (bitmap != null) {
  5. String content = "时 间:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())
  6. +"\n\n区域位置:"+StringUtils.getTextNotNull(getIntentProcessName());
  7. View inflate = View.inflate(getActivity(), R.layout.view_water_mark, null);
  8. TextView tv_title=inflate.findViewById(com.haocang.base.R.id.tv_title);
  9. TextView tv_content=inflate.findViewById(com.haocang.base.R.id.tv_content);
  10. tv_title.setText(StringUtils.getTextString(getIntentOrgName()));
  11. tv_content.setText(content);
  12. Bitmap map = ImageLoadUtil.addTextWatermarkNew(bitmap, inflate, 100, bitmap.getHeight(), true, content, degree);
  13. File file = FileUtils.saveBitmapFile(map);
  14. return file.getPath();
  15. }
  16. return pic; //如果异常返回原图片
  17. }
  18. public static Bitmap addTextWatermarkNew(Bitmap src, View markerView, float x, float y, boolean recycle, String text, int rotateDegree) {
  19. Objects.requireNonNull(src, "src is null");
  20. Bitmap ret = null;
  21. if (rotateDegree == 0) {
  22. ret = src.copy(src.getConfig(), true);
  23. } else {
  24. Matrix matrix = new Matrix();
  25. matrix.postRotate(rotateDegree);
  26. ret = Bitmap.createBitmap(src, 0, 0, src.getWidth(), src.getHeight(), matrix, true);
  27. }
  28. Bitmap marker=viewToBitMap(markerView);
  29. Canvas canvas = new Canvas(ret);
  30. canvas.translate(x, y-markerView.getHeight()-100);
  31. canvas.drawBitmap(marker,0,0,null);
  32. // canvas.drawBitmap(bitmap, 0, 0, null);//绘制小图片使用的代码
  33. if (recycle && !src.isRecycled()) src.recycle();
  34. return ret;
  35. }
  36. public static Bitmap viewToBitMap(@NonNull View view) {
  37. int measureSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
  38. view.measure(measureSpec, measureSpec);
  39. //由于是生成的,未进行测量,所有需要进行measure操作
  40. int measuredWidth = view.getMeasuredWidth();
  41. int measuredHeight = view.getMeasuredHeight();
  42. view.layout(0, 0, measuredWidth, measuredHeight);
  43. Bitmap bitmap = Bitmap.createBitmap(measuredWidth, measuredHeight, Bitmap.Config.ARGB_8888);
  44. bitmap.eraseColor(Color.TRANSPARENT);
  45. Canvas canvas = new Canvas(bitmap);
  46. view.draw(canvas);
  47. return bitmap;
  48. }

以上就是完整代,总体思路就是在图片上画一张图片,这里的图片是用控件绘制生成的图片来作为水印,相较于单纯图片稍微复杂一点,也算是一种记录。

需要用到的朋友可以直接使用。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/270436?site
推荐阅读
相关标签
  

闽ICP备14008679号