水印相机

    话说最近比较流行水印相机,动不动空间就会用水印相机拍水印照片,本人也比较喜欢,正好今天下午有点时间,就稍微模拟的实现了一下简单功能,不喜勿喷哦~作为学习交流的。

     我这边的实现的步骤是通过代码调用系统相机,然后获取拍下来的图片进行水印处理,可以加入水印的图片或者水印文字都行,最后把图片展示和保存在sdcard卡中。(看下效果图:)因为直接用的模拟器,所以相机拍出来的图片直接是系统,比较丑,自己的手机的系统相机被我删掉了。。晕

      

      (一)1:使用代码调用系统相机         

[java]  view plain  copy
  1. <span style="font-size:18px;">Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);  
  2.                 startActivityForResult(intent, 1);</span>  
           2:使用系统相机拍照确定之后,返回回来,在之前的Activity中重载protected void onActivityResult(int requestCode, int resultCode, Intent data)来获取其中的Bitmap对象.

             具体方法为:Bundle bundle = data.getExtras();
//获取拍照返回的图片
bitmap= (Bitmap) bundle.get("data");

    (二)1:对图片进行加水印出来,方法比较简单,直接用Canvas进行drawBitmap还有drawText进行了  

[java]  view plain  copy
  1. /** 
  2.      * 进行添加水印图片和文字 
  3.      *  
  4.      * @param src 
  5.      * @param waterMak 
  6.      * @return 
  7.      */  
  8.     public static Bitmap createBitmap(Bitmap src, Bitmap waterMak, String title) {  
  9.         if (src == null) {  
  10.             return src;  
  11.         }  
  12.         // 获取原始图片与水印图片的宽与高  
  13.         int w = src.getWidth();  
  14.         int h = src.getHeight();  
  15.         int ww = waterMak.getWidth();  
  16.         int wh = waterMak.getHeight();  
  17.         Log.i("jiangqq""w = " + w + ",h = " + h + ",ww = " + ww + ",wh = "  
  18.                 + wh);  
  19.         Bitmap newBitmap = Bitmap.createBitmap(w, h, Config.ARGB_8888);  
  20.         Canvas mCanvas = new Canvas(newBitmap);  
  21.         // 往位图中开始画入src原始图片  
  22.         mCanvas.drawBitmap(src, 00null);  
  23.         // 在src的右下角添加水印  
  24.         Paint paint = new Paint();  
  25.         //paint.setAlpha(100);  
  26.         mCanvas.drawBitmap(waterMak, w - ww - 5, h - wh - 5, paint);  
  27.         // 开始加入文字  
  28.         if (null != title) {  
  29.             Paint textPaint = new Paint();  
  30.             textPaint.setColor(Color.RED);  
  31.             textPaint.setTextSize(16);  
  32.             String familyName = "宋体";  
  33.             Typeface typeface = Typeface.create(familyName,  
  34.                     Typeface.BOLD_ITALIC);  
  35.             textPaint.setTypeface(typeface);  
  36.             textPaint.setTextAlign(Align.CENTER);  
  37.             mCanvas.drawText(title, w / 225, textPaint);  
  38.               
  39.         }  
  40.         mCanvas.save(Canvas.ALL_SAVE_FLAG);  
  41.         mCanvas.restore();  
  42.         return newBitmap;  
  43.     }  
           这样这个方法就会返回回去一个已经构造好的加有水印的图片,然后进行保存显示        

[java]  view plain  copy
  1. if (img != null) {  
  2.                     water_img.setImageBitmap(img);  
  3.                     //把水印图片也保存到sdcard中  
  4.                     FileUtils.saveFile(img, sdf.format(new Date(System.currentTimeMillis()))+"2.jpg");  
  5.                 }  
  6.                  }else {  
  7.                     Log.i("jiangqq""拍照失败.");  
       

(三)其中用的保存文件的工具类为:

          1:检测sdcard卡

[java]  view plain  copy
  1. // 判断SD卡是否存在  
  2. public static boolean externalMemoryAvailable() {  
  3.     return android.os.Environment.getExternalStorageState().equals(  
  4.             android.os.Environment.MEDIA_MOUNTED);  
  5. }  
          2:图片保存至文件当中    

[java]  view plain  copy
  1. /** 
  2.      * 把图片村保存在相应的文件当中 
  3.      * @param pBitmap 
  4.      * @param pPathName 
  5.      */  
  6.     public static void saveFile(Bitmap pBitmap,String fileName)  
  7.     {  
  8.         File file=new File("/sdcard/pps_image");  
  9.         if(!file.exists())  
  10.         {  
  11.             file.mkdirs();  
  12.         }  
  13.         String filePathName=file.getAbsolutePath()+"/"+fileName;  
  14.         FileOutputStream fos=null;  
  15.         try {  
  16.             fos=new FileOutputStream(filePathName);  
  17.             pBitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);  
  18.             fos.flush();  
  19.             Log.i("jiangqq""保存图片到sdcard卡成功.");  
  20.         } catch (Exception e) {  
  21.            e.printStackTrace();  
  22.         }finally  
  23.         {  
  24.             if(fos!=null)  
  25.             {  
  26.                 try {  
  27.                     fos.close();  
  28.                 } catch (IOException e) {  
  29.                     e.printStackTrace();  
  30.                 }  
  31.             }  
  32.         }  
【资源说明】 基于JavaScript的智能水印相机微信小程序源码+项目说明.tar基于JavaScript的智能水印相机微信小程序源码+项目说明.tar基于JavaScript的智能水印相机微信小程序源码+项目说明.tar基于JavaScript的智能水印相机微信小程序源码+项目说明.tar基于JavaScript的智能水印相机微信小程序源码+项目说明.tar基于JavaScript的智能水印相机微信小程序源码+项目说明.tar基于JavaScript的智能水印相机微信小程序源码+项目说明.tar基于JavaScript的智能水印相机微信小程序源码+项目说明.tar基于JavaScript的智能水印相机微信小程序源码+项目说明.tar基于JavaScript的智能水印相机微信小程序源码+项目说明.tar基于JavaScript的智能水印相机微信小程序源码+项目说明.tar基于JavaScript的智能水印相机微信小程序源码+项目说明.tar 基于JavaScript的智能水印相机微信小程序源码+项目说明.tar 基于JavaScript的智能水印相机微信小程序源码+项目说明.tar基于JavaScript的智能水印相机微信小程序源码+项目说明.tar 基于JavaScript的智能水印相机微信小程序源码+项目说明.tar 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,也适用于小白学习入门进阶。当然也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或者热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载,沟通交流,互相学习,共同进步!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值