Android图片添加水印图片并把图片保存到文件存储

package zhangphil.test;import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
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 {@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.drawable_activity);findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {add();}});}private void add() {new Thread(new Runnable() {@Overridepublic void run() {File zhang = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "zhang.jpg");try {//原图片。Bitmap bitmap1 = BitmapFactory.decodeStream(new FileInputStream(zhang));//水印图。Bitmap bitmap2 = BitmapFactory.decodeResource(getResources(), R.drawable.logo);//原图片添加水印后形成新的文件。File zhangphil = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "zhangphil.jpg");if (!zhangphil.exists())zhangphil.createNewFile();//原图片添加水印后形成的新Bitmap。在原图片的最左边和做顶部开始添加。//如果是中间或者底部需要计算x,y的坐标位置。Bitmap newbitmap = addImageWatermark(bitmap1, bitmap2, 0, 0);//把添加水印后的Bitmap保存到文件。save(newbitmap, zhangphil, Bitmap.CompressFormat.JPEG, true);} catch (Exception e) {e.printStackTrace();}}}).start();}/*** 添加图片水印。** @param src       源图片* @param watermark 图片水印* @param x         起始坐标x* @param y         起始坐标y* @return 带有图片水印的图片*/public static Bitmap addImageWatermark(Bitmap src, Bitmap watermark, int x, int y) {Bitmap retBmp = src.copy(src.getConfig(), true);Canvas canvas = new Canvas(retBmp);canvas.drawBitmap(watermark, x, y, null);return retBmp;}/*** 保存图片到文件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和水印图片res/drawable/logo.jpg。

权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

Android图片添加水印图片并把图片保存到文件存储相关推荐

  1. android创建图片资源文件,Android图片添加水印图片并把图片保存到文件存储的实现代码...

    具体代码如下所示: package zhangphil.test; import android.graphics.Bitmap; import android.graphics.BitmapFact ...

  2. PDF如何给图片添加水印,以身份证图片为例

    目录 使用Adobe Acrobat软件 step1:将图片转成pdf step2:打开正面pdf,在左上方缩略图中选择页面,右键选择插入页面,将背面pdf文件插入正面的文件 step3:右键添加文本 ...

  3. java实现word,pdf,excel,图片添加水印

    gitee项目地址:https://gitee.com/betelnutandwine/meutilswatermark: java实现pdf,word,excel,ppt,图片加水印 jar地址:s ...

  4. java 给图片添加暗水印_Java实现给图片添加水印

    使用Java给图片添加水印 根据需求给图片添加水印,直接上代码 /** * 给图片添加水印 */ public void addWaterMark() { Color color = new Colo ...

  5. .NET 6使用ImageSharp给图片添加水印

    .NET 6 中,使用System.Drawing操作图片,生成解决方案或打包的时候,会有警告,意思是System.Drawing仅在 'windows' 上受支持.微软官方的解释是: System. ...

  6. 图片添加水印 - 免费在线图片添加水印工具

    图片上怎么添加水印文字?一刀工具箱提供在线给图片加水印,照片上添加文字,给图片加水印,保证自己的图片不被别人侵犯. 代码片段 startDown(){let that = this;uni.showL ...

  7. php动图加水印,php+imagemagick给gif动态图片添加水印

    摘要:​GD库是php处理图形的扩展库,GD库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片,也可以给图片加水印.但如果用GD库给gif动态图片添加水印,最终动态图片会变成静态 ...

  8. JS前端基于canvas给图片添加水印,并下载带有水印的图片

    基于canvas给图片添加水印 实现效果图 图片添加水印的步骤 1.获取图片路径,将图片转换为canvas 2.canvas画布上绘制文字水印 3.水印绘制完成后,将canvas转换为图片格式 4.水 ...

  9. android opencv 水印,关于opencv对图片添加水印

    有一段时间没有写博客了,最近因为自己需要给图片添加水印,就写了个简单的图片添加水印 python:3.6.7 pycharm opencv是一个开源的库,是有c++编写,支持c ++,python,j ...

最新文章

  1. 敲代码括号技巧_阅码神奇Souceinsight使用小技巧总结
  2. 自顶向下的语法分析(修改)
  3. linux c 获取目录文件列表
  4. “是福不是祸,是祸躲不过”这句话对吗?
  5. oracle socket读取超时,设置套接字操作超时
  6. t test formula
  7. 【Windows工具】QuickLook-3.6.11 安装并设置开机自启动(含较难下载的 QuickLook-3.6.11 安装包百度云盘资源)
  8. 项目遇到的问题以及解决
  9. 《Go语言圣经》学习笔记 第九章 基于共享变量的并发
  10. 数据仓库的 RDBMS 性能优化指南
  11. 如何自己去写一个鼠标驱动_为什么要用哈密顿采样器(Hamiltonian Monte Carlo),以及如何自己写一个...
  12. 二级公共基础知识_计算机二级选择题(公共基础知识)
  13. Hibernate SqlQuery
  14. 吴恩达机器学习作业二——逻辑回归
  15. 咏南中间件D7客户端演示
  16. 基于SSM的车辆管理系统
  17. CMOS模拟集成电路设计 吴金 学习记录1
  18. 【爬虫】IP代理池的总结、实现与维护,IP代理池小工具(小框架),自建代理ip池
  19. 大一新生先学C语言编程还是先学C语言的数据结构和算法?
  20. 机动目标跟踪—当前统计模型(CS模型)扩展卡尔曼滤波/无迹卡尔曼滤波 matlab实现

热门文章

  1. python斜杠用法_Python中正反斜杠(‘/’和‘\’)的意义与用法
  2. 奇技淫巧玄妙无穷| M1 mac os(苹果/AppleSilicon)系统的基本操作和设置
  3. php ean-13,用php生成EAN_13标准的条形码_php
  4. SQL语言的分类及(DDL、DML、DQL)使用语法
  5. 计算机义务维修事迹材料,学雷锋义务维修电脑活动策划书与学雷锋事迹材料:身边的榜样合集.doc...
  6. 总裁演说思维:商务谈判最经典的12个技巧
  7. 【Hardware】【磁保持继电器基础知识】
  8. DEJA_VU3D - Cesium功能集 之 078-对象材质:图片轨迹线
  9. 利用陀螺仪实现更真实的微信摇一摇动画
  10. Vue 组件封装之 ScrollView 上拉加载更多