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

 更新时间:2018年06月21日 09:47:25   作者:zhangphil  
这篇文章主要介绍了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 { 
 @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图片添加水印图片并把图片保存到文件存储的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • Android Studio Gradle插件版本与Gradle版本之间的对应关系

    Android Studio Gradle插件版本与Gradle版本之间的对应关系

    今天小编就为大家分享一篇关于Android Studio Gradle插件版本与Gradle版本之间的对应关系,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • Android评分控件RatingBar使用实例解析

    Android评分控件RatingBar使用实例解析

    这篇文章主要为大家详细介绍了Android评分控件RatingBar使用实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • Android裁剪图片为圆形图片的实现原理与代码

    Android裁剪图片为圆形图片的实现原理与代码

    这个方法是根据传入的图片的高度(height)和宽度(width)决定的,如果是 width <= height时,则会裁剪高度,裁剪的区域是宽度不变高度从顶部到宽度width的长度
    2013-01-01
  • Android利用shape实现各种简单的形状

    Android利用shape实现各种简单的形状

    这篇文章主要给大家介绍了关于Android中利用shape实现各种简单的形状的相关资料,文中给出了详细的示例代码供大家参考学习,需要的朋友们下面跟着小编一起来学习学习吧。
    2017-05-05
  • Android通过手机拍照或从本地相册选取图片设置头像

    Android通过手机拍照或从本地相册选取图片设置头像

    微信、QQ、微博等社交类APP如何更换自己的头像,这篇文章主要介绍了Android通过手机拍照或从本地相册选取图片设置头像,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • Android AlertDialog对话框用法示例

    Android AlertDialog对话框用法示例

    这篇文章主要介绍了Android AlertDialog对话框用法,结合实例形式分析了AlertDialog对话框的功能及常见使用技巧,需要的朋友可以参考下
    2016-06-06
  • Android面向单Activity开发示例解析

    Android面向单Activity开发示例解析

    这篇文章主要为大家介绍了Android面向单Activity开发示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • Android弹幕框架 黑暗火焰使基本使用方法

    Android弹幕框架 黑暗火焰使基本使用方法

    这篇文章主要介绍了Android弹幕框架黑暗火焰使基本使用方法,需要的朋友可以参考下。今天我将分享由BiliBili开源的Android弹幕框架(DanmakuFlameMaster)的学习经验,感兴趣的朋友一起看看吧
    2016-10-10
  • Android子线程与更新UI问题的深入讲解

    Android子线程与更新UI问题的深入讲解

    首先和其他许多的GUI库一样,Android的UI线程是不安全的。所以下面这篇文章主要给大家介绍了关于Android子线程与更新UI问题的相关资料,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧
    2019-03-03
  • Android多渠道打包神器ProductFlavor详解

    Android多渠道打包神器ProductFlavor详解

    最近一直在学习Android Gradle 相关的知识点,今天刚好看到了 ProductFlavor 这节,ProductFlavor 的出现非常友好的帮助我们开发者解决了版本区分的问题
    2022-07-07

最新评论