android水印控件,Android图片添加文字水印并保存水印文字图片到指定文件
Android图片添加文字水印并保存水印文字图片到指定文件package zhangphil.test;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.os.Bundle;import android.os.Environment;import android.support.annotation.Nullable;import android.support.v7.app.AppCompatActivity;import android.view.View;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;public class JavaActivity extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.drawable_activity); findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { merge(); } }); } private void merge() { new Thread(new Runnable() { @Override public void run() { File zhang = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "zhang.jpg"); try { Bitmap bitmap1 = BitmapFactory.decodeStream(new FileInputStream(zhang)); File zhangphil = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "zhangphil.jpg"); if (!zhangphil.exists()) zhangphil.createNewFile(); int textSize = 60; //中间高度位置添加水印文字。 Bitmap bitmap2 = addTextWatermark(bitmap1, "blog.csdn.net/zhangphil", textSize, Color.RED, 0, bitmap1.getHeight() / 2, true); save(bitmap2, zhangphil, Bitmap.CompressFormat.JPEG, true); } catch (Exception e) { e.printStackTrace(); } } }).start(); } /** * 给一张Bitmap添加水印文字。 * * @param src 源图片 * @param content 水印文本 * @param textSize 水印字体大小 ,单位pix。 * @param color 水印字体颜色。 * @param x 起始坐标x * @param y 起始坐标y * @param recycle 是否回收 * @return 已经添加水印后的Bitmap。 */ public static Bitmap addTextWatermark(Bitmap src, String content, int textSize, int color, float x, float 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); paint.setColor(color); paint.setTextSize(textSize); Rect bounds = new Rect(); paint.getTextBounds(content, 0, content.length(), bounds); canvas.drawText(content, x, y, paint); if (recycle && !src.isRecycled()) src.recycle(); return ret; } /** * 保存图片到文件File。 * * @param src 源图片 * @param file 要保存到的文件 * @param format 格式 * @param recycle 是否回收 * @return true 成功 false 失败 */ public static boolean save(Bitmap src, File file, Bitmap.CompressFormat format, boolean recycle) { if (isEmptyBitmap(src)) return false; OutputStream os; boolean ret = false; try { os = new BufferedOutputStream(new FileOutputStream(file)); ret = src.compress(format, 100, os); if (recycle && !src.isRecycled()) src.recycle(); } catch (IOException e) { e.printStackTrace(); } return ret; } /** * Bitmap对象是否为空。 */ public static boolean isEmptyBitmap(Bitmap src) { return src == null || src.getWidth() == 0 || src.getHeight() == 0; }}
假设在根目录的Pictures目录下已经存放好名为zhang.jpg的图片,给这张图片添加红色水印文字:blog.csdn.net/zhangphil
最终:
记得加存储权限:
android水印控件,Android图片添加文字水印并保存水印文字图片到指定文件相关推荐
- android toolbar控件,Android Toolbar控件
1. Toolbar类 Toolbar是替代ActionBar的产物,低版本可以使用v7兼容包,使用Theme.AppCompat主题,并添加配置. false true 2. Toolbar配置 主 ...
- Android列表控件选项中添加进度框ProgressBar实现
今天有时间就学习了下在ListView.GridView列表项中清加ProgressBar,小马用最简单的代码实现可以通用的功能,人人都能看懂,哈哈,直接说下,如果你的适配器getView方法 ...
- android 电量控件,Android实现显示电量的控件代码
下面介绍了Android实现显示电量的控件代码,具体代码如下: 1.目录结构,本人是使用安卓死丢丢. 2.运行界面,输入框中输入数值,点击刷新,会再电池中显示出相应的电量 3.绘制自定义电池控件,首先 ...
- android+ebook控件,Android 自定义控件 eBook 翻书效果
Book.java文件: package com.book; import Android.app.Activity; import android.os.Bundle; import android ...
- android md 控件,Android基本UI控件.md
# Android基本UI控件 ## *TextView 文本框* ### TextView常用用法 | 主要方法 | 功能描述 | | :----------: | :--------------- ...
- android 绘制控件,Android自定义控件绘制基本图形基础入门
本文讲述绘制Android自定义各种图形效果,为自定义控件的入门篇 相关视频链接: 绘制点–这个控件只需要在布局中引用或者代码中new 即可,下面几个绘制只展示onDraw方法 package com ...
- Android scroller控件,Android Scroller完全解析
在Android中,任何一个控件都是可以滚动的,因为在View类当中有scrollTo()和scrollBy()这两个方法,如下图所示: 这两个方法的主要作用是将View/ViewGroup移至指定的 ...
- android裁剪控件,Android 仿抖音音频裁剪控件
效果图 QQ图片20201126164657.jpg 功能要求:绘制音频效果,音乐播放后进度滚动,控件可拖动,拖动后获取新的起始时间 (后期会加入根据音乐各个时段分贝大小来动态显示音律线的长短) 控件 ...
- android 复制控件,Android长按复制文本功能
安卓一般能用到长按复制的控件Textview,Editext,可能也有WebView 在开始之前先说一个我遇到的一个坑: viewGroup中有一个这个属性android:descendantFocu ...
最新文章
- Cuda Stream流 分析
- 两段用来启动/重启Linux下Tomcat的Perl脚本
- VS2010下使用dmp文件和pdb文件定位程序异常代码行号的注意事项
- Visual formatting model(图)
- mAP(mean Average Precision)应用(转)
- 算法题存档20190127
- 第二次裸辞_潜伏期_一些感想
- 如何判断笔记本蓝牙硬件坏了_还在担心被套路?老司机教你如何判断车用尿素溶液的好与坏...
- 数理方程与特殊函数|均匀各向同性介质内的热传导方程
- mac读取ntfs移动硬盘
- 电脑上如何快速将图片压缩变小?
- @PersistenceContext 注解在spring中代理
- 怎样进行两台电脑之间的数据传输?
- 南京技师学院计算机系,江苏南京技师学院
- 农业工程与信息技术是计算机类吗,中国海洋大学农业工程与信息技术概论2020考研复试大纲...
- 二十四节气查询 Python调用示例代码
- 基于SSM框架实现文件上传并插入数据库
- gcd(int a, int b) //求最大公约数
- 一个拖延症的学习之旅
- 案例聚焦:Ping32助力树兰医疗建设全面终端安全管理体系