给图片添加水印的基本思路都是载入原图,添加文字或者载入水印图片,保存图片这三个部分

添加水印图片:

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
private Bitmap createWaterMaskImage(Context gContext, Bitmap src, Bitmap watermark)
    {
 
        String tag = "createBitmap";
        Log.d(tag, "create a new bitmap");
        if (src == null)
        {
            return null;
        }      
        int w = src.getWidth();
        int h = src.getHeight();
        int ww = watermark.getWidth();
        int wh = watermark.getHeight();
        // create the new blank bitmap
        Bitmap newb = Bitmap.createBitmap(w, h, Config.ARGB_8888);// 创建一个新的和SRC长度宽度一样的位图
        Canvas cv = new Canvas(newb);
        // draw src into
        cv.drawBitmap(src, 0, 0, null);// 在 0,0坐标开始画入src
        // draw watermark into
        cv.drawBitmap(watermark, 20, 20, null);// 在src的右下角画入水印
        // save all clip
        cv.save(Canvas.ALL_SAVE_FLAG);// 保存
        // store
        cv.restore();// 存储
        return newb;
    }

添加文字

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
public static Bitmap scaleWithWH(Bitmap src, double w, double h) {
          if (w == 0 || h == 0 || src == null) {
              return src;
          } else {
              // 记录src的宽高
              int width = src.getWidth();
              int height = src.getHeight();
              // 创建一个matrix容器
              Matrix matrix = new Matrix();
              // 计算缩放比例
              float scaleWidth = (float) (w / width);
              float scaleHeight = (float) (h / height);
              // 开始缩放
              matrix.postScale(scaleWidth, scaleHeight);
              // 创建缩放后的图片
              return Bitmap.createBitmap(src, 0, 0, width, height, matrix, true);
          }
      }
   
  public Bitmap drawTextToBitmap(Context gContext,  
            int gResId,  
            String gText) { 
            Resources resources = gContext.getResources(); 
            float scale = resources.getDisplayMetrics().density; 
            Bitmap bitmap =  
                BitmapFactory.decodeResource(resources, gResId); 
              
            bitmap = scaleWithWH(bitmap, 300*scale, 300*scale);
             
            android.graphics.Bitmap.Config bitmapConfig = 
                bitmap.getConfig(); 
             
             
             
            // set default bitmap config if none 
            if(bitmapConfig == null) { 
              bitmapConfig = android.graphics.Bitmap.Config.ARGB_8888; 
            
            // resource bitmaps are imutable,  
            // so we need to convert it to mutable one 
            bitmap = bitmap.copy(bitmapConfig, true); 
              
            Canvas canvas = new Canvas(bitmap); 
            // new antialised Paint 
            Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); 
            // text color - #3D3D3D 
            paint.setColor(Color.RED);   
            paint.setTextSize((int) (18 * scale));             
             paint.setDither(true); //获取跟清晰的图像采样 
             paint.setFilterBitmap(true);//过滤一些 
            Rect bounds = new Rect(); 
            paint.getTextBounds(gText, 0, gText.length(), bounds);             
            int x = 30
            int y = 30;             
            canvas.drawText(gText, x * scale, y * scale, paint);                
            return bitmap; 
          }

Android 图片添加水印图片或者文字的更多相关文章

  1. java后台中处理图片辅助类汇总(上传图片到服务器,从服务器下载图片保存到本地,缩放图片,copy图片,往图片添加水印图片或者文字,生成二维码,删除图片等)

    最近工作中处理小程序宝箱活动,需要java画海报,所以把这块都快百度遍了,记录一下处理的方法,百度博客上面也有不少坑! 获取本地图片路径: String bgPath = Thread.current ...

  2. 海报工厂之(一)android 如何给图片添加水印和文字

    在Android中如何给图片添加水印,下面截取了部分核心代码,仅供参考: /**      * 获取图片缩小的图片      * @param src      * @return      */   ...

  3. Android TextView中有图片有文字混合排列

    Android TextView中有图片有文字混合排列 1.使用html.fromHtml 2.新建ImageGetter 3.使用<img src>标签 demo: 1.设置文字 ((T ...

  4. Android应用程序之间共享文字和图片(一)

    以下为TestReceiveShare1工程 MainActivity如下: package cn.testreceiveshare1; import java.util.ArrayList; imp ...

  5. Android应用程序之间共享文字和图片(二)

    MainActivity如下: package cn.testshare1; import java.io.File; import java.util.ArrayList; import andro ...

  6. 用java实现给图片增加图片水印或者文字水印(也支持视频图像帧添加水印)

    javaCV图像处理系列: javaCV图像处理之1:实时视频添加文字水印并截取视频图像保存成图片,实现文字水印的字体.位置.大小.粗度.翻转.平滑等操作 javaCV图像处理之2:实时视频添加图片水 ...

  7. android TextView 例子代码(文字图片、文字省略、文字滚动)

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  8. Java给图片和PDF文件添加水印(图片水印和文字水印)

    有时候我们看到的图片或者PDF文件会自动加上水印.分为文字水印和图片水印. ----------------------------图片水印---------------------------- 1 ...

  9. IOS 给图片添加水印(文字)

    有时候上传图片要加唯一标识,简单的就是添加一个水印.这里水印我们讲文字,可以是当前系统时间.坐标.地理位置等 原理就是把一个字符串写到图片上,并且字(font)的大小由图片大小控制. 以下是封装好的一 ...

随机推荐

  1. php sleep()的实时输出打印,清除ob缓冲区

    @ini_set('implicit_flush',1);ob_implicit_flush(1);@ob_end_clean(); echo 1;//echo str_repeat('', 1024 ...

  2. Google V8编程详解(序)Cloud App

    此系列文章转载于此http://blog.csdn.net/feiyinzilgd/article/details/8247723          应用程序发展到今天,应用程序的概念也在不断地发生着 ...

  3. MongoDB-JAVA-Driver 3.2版本常用代码全整理(4) - 地理空间索引

    MongoDB的3.x版本Java驱动相对2.x做了全新的设计,类库和使用方法上有很大区别.例如用Document替换BasicDBObject.通过Builders类构建Bson替代直接输入$命令等 ...

  4. 《IT蓝豹》PlayNewsStandDemo资讯类新闻客户端框架

    PlayNewsStandDemo资讯类新闻客户端框架,支持tab滑动切换,当切换到最左边或者最后边的时候停止滑动 本例子切换tab的效果根据AccelerateDecelerateInterpola ...

  5. Arcgis Server发布服务

    提到Arcgis Server 服务的发布,做起来貌似很简单,就算电脑再卡,只要鼠标还能点,一个小时肯定能搞定,但是当你遇到问题的时候,就头大了,也许搞上个一两天都摸不着头脑,最后你采取的措施可能是一 ...

  6. centos rar安装

    wget http://www.rarsoft.com/rar/rarlinux-x64-5.1.1.tar.gz tar -zxvf rarlinux-x64-5.1.1.tar.gz # cd r ...

  7. webservice 接口通过 HTTP 获取数据

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Ne ...

  8. Versioned table in Netezza

    Problem One QC process need to obtain tables and their row counts in a database in Netezza. We use t ...

  9. android中string.xml中%1$s、%1$d等的用法

    今天在研究前辈写的代码的时候,突然发现string里面出现了<stringname="item_recent_photo">最近拍摄%1$s</string> ...

  10. Light OJ 1032 - Fast Bit Calculations(数学)

    题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1032 题目大意:一个十进制数变化为二进制,那么对于这个数,如果连着两个二进制位 ...