shuiyin.jpg

手机端打水印(文字和图片)使用的是Bitmap、Matrix和Canvas类的一些方法, 可以实现拉伸、旋转、位移等等效果。 原理很简单, 就是在画布Canvas上绘制图形、图片、文字等等, 得到你想要的效果图片。

百度搜索图片打水印有很多结果, 没找到斜着打水印的代码,有很多公司都要求上图的效果, 所以写着玩玩。

    /* 添加全屏斜着45度的文字     /    public static Bitmap drawCenterLable(Context context, Bitmap bmp, String text) {        float scale = context.getResources().getDisplayMetrics().density;        //创建一样大小的图片        Bitmap newBmp = Bitmap.createBitmap(bmp.getWidth(), bmp.getHeight(), Config.ARGB_8888);        //创建画布        Canvas canvas = new Canvas(newBmp);        canvas.drawBitmap(bmp, 0, 0, null);   //绘制原始图片        canvas.save();        canvas.rotate(45);  //顺时针转45度        Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);        paint.setColor(Color.argb(50, 255, 255, 255)); //白色半透明        paint.setTextSize(100  scale);        paint.setDither(true);        paint.setFilterBitmap(true);        Rect rectText = new Rect();   //得到text占用宽高, 单位:像素        paint.getTextBounds(text, 0, text.length(), rectText);        double beginX = (bmp.getHeight()/2 - rectText.width()/2) * 1.4;    //45度角度值是1.414        double beginY = (bmp.getWidth()/2 - rectText.width()/2) * 1.4;        canvas.drawText(text, (int)beginX, (int)beginY, paint);        canvas.restore();        return  newBmp;    }

使用44KB的png图片验证效率:

long begin = System.currentTimeMillis();Bitmap destBmp = ImageUtil.drawCenterLable(this, sourBitmap, "某某公司专用");long end = System.currentTimeMillis();Log.d("brycegao", "打水印用时:" + (end-begin) + "毫秒");mWartermarkImage.setImageBitmap(destBmp);

小米4手机输出: D/brycegao: 打水印用时:69毫秒

使用3M字节的jpg图片测试打水印,报OOM错误。

   java.lang.OutOfMemoryError: Failed to allocate a 467251212 byte allocation with 16767536 free bytes and 110MB until OOM                                                                               at dalvik.system.VMRuntime.newNonMovableArray(Native Method)                                                                               at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)                                                                               at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:613)                                                                               at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:446)                                                                               at android.graphics.BitmapFactory.decodeResource(BitmapFactory.java:469)                                                                               at android.graphics.BitmapFactory.decodeResource(BitmapFactory.java:501)

手机端使用Android原生方法打水印, 应该先将压缩分辨率, 避免OOM的情况, 但是影响清晰度; 大部分app都是将原图传到服务器, 在后台打水印。

因为原生方法有分辨率和内存限制, 听说七牛的图片库(支持打水印)很好用, 看看是否可以落地到各种配置的Android手机中。

Android图片打水印相关推荐

  1. Android 时间 定位 图片水印,android图片加水印

    public static Bitmap createWaterMaskBitmap(Bitmap src, Bitmap watermark) { int paddingTop ; if (src ...

  2. android图片加水印,文字

    两种方法:1.直接在图片上写文字String str = "PICC要写的文字";ImageView image = (ImageView) this.findViewById(R ...

  3. android图片上水印字体颜色,Android给图片添加文字和水印

    话不多说 上图 gif5新文件.gif public class ImageUtil { /** * 设置水印图片在左上角 * * @param context 上下文 * @param src * ...

  4. Android——为图片增加水印,并且保存到图库刷新

    为图片增加水印我们可以通过canvas来绘制,首先我们新创建一个工具类: object WaterMarkHelper {fun createWaterMaskBitmap(context: Acti ...

  5. android水印控件,Android图片添加文字水印并保存水印文字图片到指定文件

    Android图片添加文字水印并保存水印文字图片到指定文件package zhangphil.test;import android.graphics.Bitmap;import android.gr ...

  6. Android实现图片加水印,视频水印

    Android实现图片加水印,视频加水印 推荐经典用例,超级简单的视频加水印,图片加水印功能. 视频加水印: Android拍视频加水印功能 图片加水印 Android轻松实现拍照加水印

  7. android实现自定义相机以及图片的水印

    最近在做图片的水印功能,也就研究了一下android的相机.在android中有两种方式可以进行拍照,一种是调用系统的拍照功能调用方式比较简单而且不需要权限. 调用方式: //照相机中获取照片publ ...

  8. android:给图片打水印

    现在是维护知识产权的时代,很多时候app展示的图片会要求打上水印以强调自己对图片的知识产权.现在道长给大家分享一下给图片打水印的方法.额,这里道长已经写成一个简单的工具类.先把工具类的代码贴上: im ...

  9. Android 图片处理工具类汇总

    很有用的Android图片处理工具,实现各种图片处理效果 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 ...

最新文章

  1. python编程面向对象很简单,只需要掌握这几点
  2. 嵌入式linux dhcp移植,嵌入式linux中的dhcp服务器
  3. IHttpHandler的学习(0)
  4. (11/24) css进阶:Less文件的打包和分离
  5. 李善友《认知升级之第一性原理》--507张PPT全解!_搜狐科技_搜狐网
  6. Python性能优化的20条建议
  7. linux用户登录实验,实验三 Linux系统登录及用户管理
  8. 栈的应用--迷宫问题
  9. 如何成为一名优秀的web前端工程师
  10. Greeting Card 模拟
  11. DOM操作与引用资源的前后关系
  12. 深度学习计算机视觉的简介_商业用途计算机视觉简介
  13. 海军装备、舰船电子设备|环境可靠性试验|GJB150A\GJB4
  14. java程序设计精编教程第3版电子版课后答案_java程序设计精编教程第3版答案
  15. 国内外各大免费收录网站搜索引擎及导航网址提交入口
  16. 短视频源码开发,短视频系统源码搭建,从短视频系统起播过程入手
  17. 测试计划与测试方案区别
  18. 电脑运行MATLAB直接关机,Matlab相关-----matlab跑完程序后自动关机
  19. linux中bash是什么命令,linux中bash是什么意思?
  20. 卷积神经网络的训练过程

热门文章

  1. 搜索引擎排名优化有哪些方法,搜索引擎排名优化技巧
  2. 毕设分享:基于STM32两轮自平衡小车 含源码、原理图及PCB文件
  3. java时间格式大全
  4. 如何使用Xshell连接阿里云服务器
  5. 《操作系统》2020年期末A卷
  6. 享学课堂Java开发之Mybatis训练营
  7. flex布局——最后一行左对齐的实现方式(css功能实现)
  8. echars 3D地图为区域自定义颜色
  9. [思想][励志]《真希望我20几岁就知道的事 What I Wish I Knew When I Was 20》 -- 蒂娜·齐莉格(美)...
  10. 【Image Registration】图像配准综述