Android 实现图片水印功能

  今天接到任务,要做水印功能,由于菜鸟一个,就在网上找了好久,大部分demon都是水印相片或者文字太模糊,而且也封装得没那么好,结合了几个demon,最后自己在此基础上封装了一个类,同时包含水印照和字符串功能,效果图如下:

  废话少说,代码献上:

  xml 中设置一个 ImageView 控件:

  <ImageView

    android:id="@+id/imageView"    android:layout_width="300dp"    android:layout_height="300dp"    android:layout_centerVertical="true"    android:layout_centerHorizontal="true" />

  

  窗体代码类如下:

  

private void initView() {  //获取本地资源图片(这里你可以通过照相机或者相册获取 bitmap 图片对象)    Bitmap src = BitmapFactory.decodeResource(getResources(), R.drawable.yt);    int w = src.getWidth();//获取图片的宽    int h = src.getHeight();//获取图片的高    //压缩图片的bitmap    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.drawable.lg);    //加水印    src1 = WaterMark.createWaterBitmap(src1, water, "2016-5-20 13:14:00");    //src1 = WaterMark.watermarkBitmap(src1,water,"2016-5-19");

    //显示    ImageView imageView = (ImageView) findViewById(R.id.imageView);    imageView.setImageBitmap(src1);}
下面是已封装好的方法类:
/** * @author Feiniu *         Created by Administrator on 2016/5/19 0019. */public class WaterMark {

    /**     * 水印 logo 与 标题     */    public static Bitmap createWaterBitmap(Bitmap src, Bitmap watermark, String title) {        Bitmap newb = null;//创建一个保存水印的位图        if (src == null) {            return null;        }        //原图片的宽        int w = src.getWidth();        int h = src.getHeight();//原图片的高        int ww = watermark.getWidth();//水印图片的宽        int wh = watermark.getHeight();//水印图片的高        Log.v("wz", w + "," + h + "," + ww + "," + wh);//日志文件中查看位图大小

        newb = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);//创建一个新的和src一样大小的位图        Canvas cv = new Canvas(newb);//创建一个同等 大小的画布        cv.drawBitmap(src, 0, 0, null);//从坐标0,0开始把src画入画布        //设置水印 logo 的大小        watermark = Bitmap.createScaledBitmap(watermark, 80, 80, true);        Paint textPaint = new Paint(Paint.ANTI_ALIAS_FLAG);        Typeface font = Typeface.create(Typeface.DEFAULT, Typeface.BOLD);

        //在src中画入水印(右下角)        cv.drawBitmap(watermark, 10, 10, null);

        //加入文字        if (title != null) {            float baseX = w - 350;            float newY = h - 30;

            textPaint.setTextSize(35);            // textPaint.setColor( Color.RED);            textPaint.setColor(Color.rgb(255, 127, 0));            textPaint.setTypeface(font);            cv.drawText(title, baseX, newY, textPaint);        }

        cv.save();//保存        cv.restore();//存储        return newb;//返回带水印的位图    }

}

 此时,运行项目即可看到如图的效果啦。

  

时间: 2024-10-24 04:07:46

Android 实现图片水印功能的相关文章

Android图片裁剪功能——调用系统裁剪

花了两天时间看了下android的图片裁剪功能的实现.其实刚开始做这个我挺虚的,以为整个功能都需要自己写出来,但查了些资料,发现android已经提供了裁剪功能,需要的话自己调用就成了.soga,这下轻松多了. 首先推荐几篇博客 Android大图片裁剪终极解决方案 要想弄明白裁剪功能,这系列博客非常重要,你可以不看我下面总结的,但你一定要看他这系列的几篇文章. Android 图片裁剪功能实现详解(类似QQ自定义头像裁剪) 这篇也不错,比较喜欢他的注释.虽然也有些误导,比如说他有一段对setD

iOS UIImage 图片水印,图片裁剪,屏幕截图,背景平铺

图片水印功能 1 #import "UIImage+ZR.h" 2 3 @implementation UIImage (ZR) 4 + (instancetype)waterImageWithBg:(NSString *)bg logo:(NSString *)logo 5 { 6 UIImage *bgImage = [UIImage imageNamed:bg]; 7 8 // 1.创建一个基于位图的上下文(开启一个基于位图的上下文) 9 UIGraphicsBeginImage

Android中图片的处理(放大缩小,去色,转换格式,增加水印等)(转)

Android中图片的处理(放大缩小,去色,转换格式,增加水印等) 原文地址:http://menxu.lofter.com/post/164b9d_3ebf79 package com.teamkn.base.utils; import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.

android photoview 图片放大缩放功能 ImageView

android 图片浏览功能  图片放大缩小 使用 photoview 双击或双指缩放的ImageView 使用多点触控和双击. 滚动,以平滑滚动甩. 实际效果参考 图片来自 : http://a.code4app.com/android/PhotoView/5241a4026803fa1327000000 下载完成后 导入IDE里面 将lib  添加进来 贴出 photoview的代码: /****************************************************

android 图库浏览的功能有没有谁做过。主要是拿到图片和视频后排序的问题。

============问题描述============ android 图库浏览的功能有没有谁做过.主要是拿到图片和视频后排序的问题. 现在要做一个类似图库的查看功能,要所有sd卡扫描出来的图片和视频按照时间先后排序.有人做过吗? ============解决方案1============ 排序不会么?用Java Collections.sort 方法. ============解决方案2============ 这个搜一下应该有很多吧,然后自己改改.获取一下日期信息排序.

本图片处理类功能非常之强大可以实现几乎所有WEB开发中对图像的处理功能都集成了,包括有缩放图像、切割图像、图像类型转换、彩色转黑白、文字水印、图片水印等功能

import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.Toolkit; import java.awt.color.ColorSpace; import java.awt.geom.AffineTransform;

使用lowagie给pdf添加文字和图片水印

package com.xian.util; import java.awt.Color;import java.io.FileOutputStream;import java.io.IOException; import com.lowagie.text.DocumentException;import com.lowagie.text.Element;import com.lowagie.text.Image;import com.lowagie.text.pdf.BaseFont;impo

图片处理类(图片水印 图片缩放)

本图片处理类功能非常之强大可以实现几乎所有WEB开发中对图像的处理功能都集成了,包括有缩放图像.切割图像.图像类型转换.彩色转黑白.文字水印.图片水印等功能 1 import java.awt.AlphaComposite; 2 import java.awt.Color; 3 import java.awt.Font; 4 import java.awt.Graphics; 5 import java.awt.Graphics2D; 6 import java.awt.Image; 7 imp

Thinkphp图片水印和文字水印

1.Thinkphp图像处理 在TP框架中,我们经常用到图片上传,我最近写了很多关于图片上传的文章,thinkphp图片上传+validate表单验证+图片木马检测+缩略图生成等文章,今天写一下关于图片上传成功后给图片加水印文字或者加图片水印, 1.1图片处理类和库 首先,在Thinkphp\Think\Image类中有图像处理功能,支持Gd库和Imagick库,包括对GIf图像处理的支持. 1.2实例化类库 $image = new \Think\Image(); 实例化image后,默认使用