生成水印照片类

package com.chinawit.cwandroidbase.Infrastructure.CWComponent.CWImage.WaterMark;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Typeface;
import android.text.Layout;
import android.text.StaticLayout;
import android.text.TextPaint;

/**
 * Created by lenovo on 2016/3/15.
 */
public class WaterMarkUtil {private float imageDrawFormX, imageDrawFormY;
    private float imageOffsetX,imageOffsetY;
    private int textColor, textSize;
    private Context context;

    public WaterMarkUtil() {imageDrawFormX = 0;
        imageDrawFormY = 0;
        imageOffsetX= 0;
        imageOffsetY= 0;
        textColor = Color.BLUE;
        textSize = 15;
    }public WaterMarkUtil(Context context) {this.context = context;
        imageDrawFormX = 0;
        imageDrawFormY = 0;
        imageOffsetX= 0;
        imageOffsetY= 0;
        textColor = Color.BLUE;
        textSize = 15;
    }public void setImageDrawXY(float imageDrawFormX, float imageDrawFormY) {this.imageDrawFormX = imageDrawFormX;
        this.imageDrawFormY = imageDrawFormY;
    }public void setImageOffsetXY(float imageOffsetX,float imageOffsetY){this.imageOffsetX = imageOffsetX;
        this.imageOffsetY = imageOffsetY;
    }public void setTextColor(int textColor) {this.textColor = textColor;
    }public void setTextSize(int textSize) {this.textSize = textSize;
    }// add waterMark
    public Bitmap addWaterMarkByImageAndWord(Bitmap src, Bitmap mark, String title) {if (src == null) {return null;
        }int srcWidth = src.getWidth();
        int srcHeight = src.getHeight();
        //create the new blank bitmap
        Bitmap newbitmap = Bitmap.createBitmap(srcWidth, srcHeight, Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(newbitmap);
        //draw src into
        canvas.drawBitmap(src, imageDrawFormX, imageDrawFormY, null);
        Paint paint = new Paint();
        if (mark != null) {int markWidth = mark.getWidth();
            int markHeight = mark.getHeight();
            paint.setAlpha(50);
            //draw watermark into
            canvas.drawBitmap(mark,imageOffsetX,imageOffsetY, null);
        }if (title != null) {String familyName = "宋体";
            Typeface font = Typeface.create(familyName, Typeface.BOLD);
            TextPaint textPaint = new TextPaint();
            textPaint.setColor(textColor);
            textPaint.setTypeface(font);
            textPaint.setTextSize(textSize);
            textPaint.setAntiAlias(true);
            StaticLayout layout = new StaticLayout(title, textPaint, srcWidth, Layout.Alignment.ALIGN_NORMAL, 1.0F, 0.0F, true);
            layout.draw(canvas);
        }//save all clip
        canvas.save(Canvas.ALL_SAVE_FLAG);
        //store
        canvas.restore();
        return newbitmap;
    }
}

实例使用

package com.chinawit.cwandroidbase.SampleImage;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.os.Bundle;
import android.widget.ImageView;

import com.chinawit.cwandroidbase.Infrastructure.CWComponent.CWImage.WaterMark.WaterMarkUtil;
import com.chinawit.cwandroidbase.R;

public class WaterMarkActivity extends Activity {@Override
    protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_water_mark);
        Bitmap src = BitmapFactory.decodeResource(getResources(), R.mipmap.main_bg);
        int w = src.getWidth();
        int h = src.getHeight();
        float scale = (float) (1000000.0/(w*h));
        Matrix matrix = new Matrix();
        matrix.setScale(scale, scale);
        Bitmap src1 = Bitmap.createBitmap(src, 0, 0, src.getWidth(), src.getHeight(), matrix, true);

        src.recycle();

        Bitmap water = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);

        WaterMarkUtil waterMarkUtil = new WaterMarkUtil();
        waterMarkUtil.setTextSize(50);
        waterMarkUtil.setImageOffsetXY(w/2-water.getWidth(), h/2-water.getHeight());
        src1 = waterMarkUtil.addWaterMarkByImageAndWord(src1,water,"Aeric waterMark test");

        ImageView imageView = (ImageView)findViewById(R.id.imageView);
        imageView.setImageBitmap(src1);
    }}

android 给图片加水印相关推荐

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

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

  2. android 照片加水印,Android 实现图片加水印或logo

    我们常常会遇到为图像加水印或logo的需求,一般可以通过三方库或者软件实现,但其实加水印非常简单,仅用一个函数即可实现. 实现思路,逐一计算水印和原图重叠部分的像素点的RGBA分量: float pe ...

  3. android给图片加水印的极简实现方式

    工作日志:其实这是两年前就碰到的需求,之前没有整理,也没有继续优化和实现,这次又用到这样的需求,所以记录下来,既是一种代码记录,也是一种复习bitmap和canvas的好手段,这里提供一种思路,就是将 ...

  4. Android给图片加水印

    try { ImageView img=(ImageView) findViewById(R.id.test_img_file); //获取从本地获取的文件路径,用FileInputstream读入文 ...

  5. golang实现给图片加水印

    2019独角兽企业重金招聘Python工程师标准>>> 最近跟在写golang图片加水印的方法,这里用的是一些基本的功能. package mainimport ("fmt ...

  6. android 加载进度,Android实现图片加载进度提示

    本文实例为大家分享了Android实现图片加载进度提示的具体代码,供大家参考,具体内容如下 先上图: 实现原理: 第一个控件的实现原理是重写ImageView的onDraw()方法,利用Canvas的 ...

  7. php加水印功能,PHP图片加水印功能

    本篇文章主要介绍PHP图片加水印功能,感兴趣的朋友参考下,希望对大家有所帮助. 实例代码如下:<?php /** * 功能:给一张图片加上水印效果 * $i 要加水印效果的图片 * $t 水印文 ...

  8. Java图片处理(二)图片加水印

    图片加水印,是通过图片重叠绘制实现的.实现代码如下: public static void press(String pressImg, String pressText, String target ...

  9. C# 图片加水印例程

    using System; using System.IO; using System.Collections; using System.Drawing; using System.Drawing. ...

最新文章

  1. linux终端历史记录文件夹,如何通过命令行查看`.bash_history`文件?
  2. MySQL-MMM实现MySQL高可用
  3. Angular2 从搭建环境到开发
  4. CloudFoundry cf push命令报错误码223的解决方法
  5. mysql日期代码_mysql日期查询操作代码
  6. linux系统之上搭建maven 之nexus服务篇
  7. android+数据库类型转换,ANDROID数据库错误:不兼容的类型:INT不能转换到CursorFactory...
  8. 马哥python全栈培训怎么样,你只需要在马哥教育待四个月
  9. 台式计算机显卡最高温度多少,台式机的正常温度是多少
  10. 大数据培训课资源调度器详解
  11. HTTP headers 详解 headers 常用属性
  12. no tests ran in 0.03 seconds
  13. android 6.0小游戏,宝宝汽车小游戏
  14. Nginx优化与防盗链
  15. 用记事本编写小游戏_一款适合你的记事本——提高你工作的效率!
  16. 计算机数学与高中数学衔接,高中数学的断层与衔接研究论文
  17. mysql启动显示系统错误1067_启动MySql时出现1067系统错误 解决方案
  18. java long 和long_java中Long和long的区别
  19. Android二手书交易app设计(2)启动图Activity
  20. JAVA整合阿里云ONS(RocketMQ)

热门文章

  1. 【硬件】墨水屏显示改造方案
  2. zed相机使用(1)
  3. AE 「酷酷的藤」特效字幕制作方法
  4. 每周一磁 · 铁氧体永磁材料
  5. char和int转换
  6. SMT贴片快速打样时锡不饱满的原因
  7. 41,缺失的第一个正数
  8. 如何保存卡住的wps_wps卡住了点不动退不出,文件没保存怎么办_常见问题解析,wps...
  9. 高级java工程师具备的知识
  10. 计算机考研统考科目408思维导图