前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android图片添加水印图片并把图片保存到文件存储的实现代码

Android图片添加水印图片并把图片保存到文件存储的实现代码

作者头像
砸漏
发布2020-11-05 11:42:27
7730
发布2020-11-05 11:42:27
举报
文章被收录于专栏:恩蓝脚本恩蓝脚本恩蓝脚本

具体代码如下所示:

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。

权限:

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

总结

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-09-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档