Android给图片增加文字或图标水印源代码下载
2015-08-26 10:39:13  By: shinyuu

本Demo是一个基于安卓的直接给图片添加小图片水印和给图片添加文字水印的小例子源码、如果是PNG图片则可以直接透明的绘制到底图上、比如例子中使用圣诞贺卡图标作为水印直接绘制在一个扑克牌图片上面、使用dwtedx文字做为水印直接绘制在一个扑克牌图片上面、其他图片格式没有测试、项目比较简单、代码量比较少、很好看懂的、效果图如下

android 图片水印


图标水印方式 createBitmap() 代码

private Bitmap createBitmap(Bitmap photo, Bitmap watermark,int mark_x,int mark_y){ 
    //左上角 mark_x = 0;mark_y=0;
    //右上角 mark_x = photo.getWidth() - watermark.getWidth();mark_y=0;
    //左下角 mark_x = 0;mark_y=photo.getHeight() - watermark.getHeight();
    /*左上角 mark_x = photo.getWidth() - watermark.getWidth();
    /mark_y = photo.getHeight() - watermark.getHeight();*/
    
    String tag = "createBitmap";
    // Log.d( tag, "create a new bitmap" );
    if (photo == null) {
        return null;
    }
    int photoWidth = photo.getWidth();
    int photoHeight = photo.getHeight();
    int markWidth = watermark.getWidth();
    int markHeight = watermark.getHeight();

    // create the new blank bitmap
    Bitmap newb = Bitmap.createBitmap(photoWidth, photoHeight, Config.ARGB_8888);
    // 创建一个新的和SRC长度宽度一样的位图
    Canvas cv = new Canvas(newb);
    
    // draw src into
    // 在 0,0坐标开始画入src
    cv.drawBitmap(photo, 10,10, null);
    // draw watermark into
    // 在src的右下角画入水印
    cv.drawBitmap(watermark,  mark_x , mark_y , null);
    // save all clip
    cv.save(Canvas.ALL_SAVE_FLAG);// 保存
    // store
    cv.restore();// 存储
    return newb; 
}


文字水印方式 createBitmap() 代码

private Bitmap createBitmap(Bitmap photo, String str,int mark_x,int mark_y){
    int width = photo.getWidth(), hight = photo.getHeight();
    System.out.println("宽" width "高" hight);
    //建立一个空的BItMap  
    Bitmap icon = Bitmap.createBitmap(width, hight, Bitmap.Config.ARGB_8888); 
    //初始化画布绘制的图像到icon上  
    Canvas canvas = new Canvas(icon);
     
    Paint photoPaint = new Paint(); //建立画笔  
    photoPaint.setDither(true); //获取跟清晰的图像采样  
    photoPaint.setFilterBitmap(true);//过滤一些  

    //创建一个指定的新矩形的坐标  
    Rect src = new Rect(0, 0, photo.getWidth(), photo.getHeight());
    //创建一个指定的新矩形的坐标
    Rect dst = new Rect(0, 0, width, hight);
    //将photo 缩放或则扩大到 dst使用的填充区photoPaint  
    canvas.drawBitmap(photo, src, dst, photoPaint);

    //设置画笔  
    Paint textPaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG);
    textPaint.setTextSize(20.0f);//字体大小  
    //采用默认的宽度  
    textPaint.setTypeface(Typeface.DEFAULT_BOLD);
    textPaint.setColor(Color.RED);//采用的颜色  
    //影音的设置  
    //textPaint.setShadowLayer(3f, 1, 1,this.getResources().getColor(android.R.color.background_dark));
    //绘制上去字,开始未知x,y采用那只笔绘制 
    canvas.drawText(str, mark_x, mark_y, textPaint);
    canvas.save(Canvas.ALL_SAVE_FLAG); 
    canvas.restore(); 
    return icon;
}


最后给贴上Demo的源代码、希望对大家有用、有兴趣的哥们可以下载看看

源代码下载链接: http://dwtedx.com/download.html?bdkey=s/1nt5pVnz 密码: 26ey

若资源对你有帮助、浏览后有很大收获、不妨小额打赏我一下、你的鼓励是维持我不断写博客最大动力

想获取DD博客最新代码、你可以扫描下方的二维码、关注DD博客微信公众号(ddblogs)

或者你也可以关注我的新浪微博、了解DD博客的最新动态:DD博客官方微博(dwtedx的微博)

如对资源有任何疑问或觉得仍然有很大的改善空间、可以对该博文进行评论、希望不吝赐教

为保证及时回复、可以使用博客留言板给我留言: DD博客留言板(dwtedx的留言板)

感谢你的访问、祝你生活愉快、工作顺心、欢迎常来逛逛


快速评论


技术评论

DD记账
top
+