android后台打水印,并进行压缩

package com.unicom;

import android.app.Application;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import    java.text.SimpleDateFormat;

import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.view.View;

import java.util.Date;
import java.util.UUID;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

import io.dcloud.application.DCloudApplication;

/**
 * Created by YueYan on 2018/8/7.
 */

public class JavaActivity{

    public String merge(String url,String dataStr) throws Exception {
        File zhang = new File(url);
        Bitmap bitmap1 = BitmapFactory.decodeStream(new FileInputStream(zhang));
        String[] filePathArr = url.split("/");
        String fileNameStr = filePathArr[filePathArr.length-1];
        String[] fileNameArr = fileNameStr.split("\\.");
        String fileType = fileNameArr[1];

        SimpleDateFormat    formatter    =   new    SimpleDateFormat    ("yyyyMMdd_HHmmss");
        Date curDate    =   new    Date(System.currentTimeMillis());//获取当前时间
        String    str    =    formatter.format(curDate);
        String fileName = "IMG_"+str+"."+fileType;
        File zhangphil = new File("/storage/emulated/0/DCIM/Camera/"+fileName);
        if (!zhangphil.exists())
            zhangphil.createNewFile();
        //中间高度位置添加水印文字。
        Bitmap bitmap2 = addTextWatermark(bitmap1,dataStr, Color.BLUE, bitmap1.getWidth(), bitmap1.getHeight(), true);
        save(bitmap2, zhangphil, Bitmap.CompressFormat.JPEG, true,fileName);


        return  "/storage/emulated/0/DCIM/Camera/"+fileName;
    }

    /**
     * 给一张Bitmap添加水印文字。
     *
     * @param src      源图片
     * @param content  水印文本
     * @param color    水印字体颜色。
     * @param x        起始坐标x
     * @param y        起始坐标y
     * @param recycle  是否回收
     * @return 已经添加水印后的Bitmap。
     */
    public static Bitmap addTextWatermark(Bitmap src, String content, int color, int x, int y, boolean recycle) {
        if (isEmptyBitmap(src) || content == null)
            return null;
        Bitmap ret = src.copy(src.getConfig(), true);
        Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
        //Canvas canvas = new Canvas(ret);
        Rect bounds = new Rect();
       //添加多行水印,逗号隔开,并根据图片大小设置字体大小和水印间隔
        String[] paintArr =  content.split(",");
        int fontSize = x/20;
        if(fontSize>120) {
            fontSize=120;
        }
        int xw = 50;
        int fontSizeJJ = fontSize+fontSize/10;
        int yBngin = y-50-fontSizeJJ* paintArr.length;
        paint.setColor(color);
        paint.setTextSize(fontSize);
        for (int i =0;i

你可能感兴趣的:(android后台打水印,并进行压缩)