zoukankan      html  css  js  c++  java
  • 水印效果

    图片涂鸦和水印其实是一个功能,实现的方式是一样的,就是一张大图片和一张小点图片叠加即可。前面在android图像处理系列之六--给图片添加边框(下)-图片叠加中也讲到了图片叠加,里面实现的原理是直接操作像素点。下面给出别外一种方式让图片叠加--用Canvas处理图片,canvas已经封装好了,直接调用就行。

    下面看效果:

    +=

    代码:

    [java] view plaincopy
     
    1. /** 
    2.      * 组合涂鸦图片和源图片 
    3.      * @param src 源图片 
    4.      * @param watermark 涂鸦图片 
    5.      * @return 
    6.      */  
    7.     public Bitmap doodle(Bitmap src, Bitmap watermark)  
    8.     {  
    9.         // 另外创建一张图片  
    10.         Bitmap newb = Bitmap.createBitmap(src.getWidth(), src.getHeight(), Config.ARGB_8888);// 创建一个新的和SRC长度宽度一样的位图  
    11.         Canvas canvas = new Canvas(newb);  
    12.         canvas.drawBitmap(src, 0, 0, null);// 在 0,0坐标开始画入原图片src  
    13.         canvas.drawBitmap(watermark, (src.getWidth() - watermark.getWidth()) / 2, (src.getHeight() - watermark.getHeight()) / 2, null); // 涂鸦图片画到原图片中间位置  
    14.         canvas.save(Canvas.ALL_SAVE_FLAG);  
    15.         canvas.restore();  
    16.           
    17.         watermark.recycle();  
    18.         watermark = null;  
    19.           
    20.         return newb;  
    21.     }  


     

    跟前面一样,要注意图片最好放在assets目录,另外注意图片回收,不然图片过到会造成内存紧张。这种叠加方式一般选用PNG格式的图片做为涂鸦图片或者水印,当然也可以用JPG,那就需要按照前面所说的android图像处理系列之六--给图片添加边框(下)-图片叠加进行像素点过滤,这样会影响处理速度,所以不建议用JPG图片,如果能写更高效的算法,也可以。

    另外在做涂鸦的时候,需求可能会是用户可以按住涂鸦图片,然后进行拖动效果。这样的话,我给个思路,重写ImageView里面的onTouchEvent方法,MotionEvent.getAction()里面有三种状态,MotionEvent.ACTION_DOWN、MotionEvent.ACTION_UP和MotionEvent.ACTION_MOVE,根据这三种状态来判断用户的行为,决定是否移动图片,另外要注意判断涂鸦图片是否移动到原图片的边缘。由于这部分代码是跟裁剪放在一样的,不好贴出来,所以给大家一个思路,后面会把裁剪的代码贴出来。

    OK,这篇就写到这里,后面还有一种图片叠加的方式,敬请期待!

  • 相关阅读:
    LeetCode 42. Trapping Rain Water
    LeetCode 209. Minimum Size Subarray Sum
    LeetCode 50. Pow(x, n)
    LeetCode 80. Remove Duplicates from Sorted Array II
    Window10 激活
    Premiere 关键帧缩放
    AE 「酷酷的藤」特效字幕制作方法
    51Talk第一天 培训系列1
    Premiere 视频转场
    Premiere 暴徒生活Thug Life
  • 原文地址:https://www.cnblogs.com/clarence/p/3837894.html
Copyright © 2011-2022 走看看