具体代码如下所示:

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 {

@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) {

add();

}

});

}

private void add() {

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));

//水印图。

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。

权限:

总结

以上所述是小编给大家介绍的Android图片添加水印图片并把图片保存到文件存储的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

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

  1. android创建布局文件,android学习——Android Studio下创建menu布局文件

    一.问题: android studio项目中没有看到menu文件夹: 在android studio项目中想要添加menu布局文件,一开始我的做法是:直接在res文件夹右键选择xml文件来添加,如下 ...

  2. android 创建assetmanager文件,Android AssetManager

    Android AssetManager的创建 本文基于Android 6.0源码分析 AssetManager的类图 我们以一个"Hello World" APK(包名:com. ...

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

    Android图片添加水印图片并把图片保存到文件存储 package zhangphil.test;import android.graphics.Bitmap; import android.gra ...

  4. Android中图片资源格式的是,Android 项目图片资源文件的使用,适配以及优化

    Android 项目图片资源文件的使用,适配以及优化 Aandroid,适配,bitmap,bitmapfactory,优化, 2016-05-13 16:52:50 Android 项目中常见的图片 ...

  5. android xml文件放在哪里,android 创建 xml文件

    android创建xml文件的方法. 要操作android的外部存储,所以要在AndroidManifest.xml文件中添加权限. 首先要创建一个XmlSerialize对象. 并创建一个文件,并打 ...

  6. Android中图片资源文件找不到的问题

    最近每天被Google坑,整个人也是不太好... 你们遇到过这样恶心的Log吗?这个.9的资源文件明明就在那里,却说不在.仔细研究,发现竟然是downsampling的时候出了问题. 放在高dpi目录 ...

  7. android 字体文件压缩,Android创建assets文件夹并使用字体图标(Icon Font)

    首先我们要知道如何在AS中新建引用assets文件 1.将项目切换到Project模式 Project.png 2.要注意assets文件夹要跟Java文件在同一目录下,都包含在main的文件下面. ...

  8. android 创建 file 文件,文本 并写入内容

    创建file 文件在android 6.0 之后需要用户手动开启权限下面介绍下使用 这里只是写入内容所以就在配置文件中添加写入的权限, <uses-permission android:name ...

  9. android 创建多级目录,Android创建文件夹

    之前写过一篇博文<Android在SDcard建文件夹(在Android中移动文件必用)>http://xuewei.blog.51cto.com/6061915/1069843 pack ...

最新文章

  1. 【白皮书分享】2020双十一五大趋势洞察白皮书.pdf(附下载链接)
  2. weblogic数据源配置oracle and mysql
  3. 微信小程序 体验版开启调试模式
  4. java添加word书签,Jacob操作Word书签
  5. linux svc作用,[svc]linux性能监控
  6. xHCI1.1-TRB Ring
  7. 微博SDK 分享以后无法返回
  8. 监控视频中的主码流和子码流是什么意思?
  9. win7升级win10后周期性蓝屏问题解决(经过2个月的测试观察,电脑没有再出现蓝屏)
  10. 输出4+44+444+4444
  11. 基于ZStack3.0.1(CC2530)和ST7735S的HAL_LCD驱动替换(一)
  12. 格鲁夫12年前惊人的预言,解释了今天美国对中国芯片所做的一切
  13. linux磁盘阵列数据恢复,恢复天使免费数据恢复软件
  14. photoshop做带有透明通道的贴图
  15. ESD9X5VU-2/TR瞬态电压抑制器WILLSEM ESD9X5VU 1线单向超低电容
  16. CentOS搭建Terraria服务器
  17. 共创数字国企丨金蝶云・苍穹应邀参加国有企业数字化转型与发展研讨会
  18. Java Lambda 分区 例子 水仙花
  19. AutoIt3病毒杀毒攻略(详)
  20. IHE测试系列之五:实验室技术框架参考资料

热门文章

  1. 中国通信服务股份有限公司之广通服的划分!
  2. Flutter选择多张图片上传
  3. 我的第一个工程-一个台球游戏
  4. 铸造工艺问题6——砂型涂料多厚,刷几次?芯头斜度?新旧砂的作用树脂、固化剂的作用
  5. 超酷的javascript文字云/标签云效果 - D3 Cloud
  6. 42、我的C#学习笔记8
  7. 【3D游戏模型】在ZBrush中制作3D兽人
  8. 微信小程序各错误码及原因自用表
  9. 恒星日和太阳日【转载】
  10. 谷歌小恐龙-有网也能玩儿