Android添加水印的正確方法 只要三步!
開門見山,添加水印的方法非常簡單,其實就只有3個步驟:
1、載入原始圖片
2、載入水印圖片
3、保存帶有水印的圖片
實現(xiàn)的原理就是:獲取原始圖片的寬高,然后,新建一個同樣寬高的bitmap,將這個新的bitmap作為畫布,接著,就在這個畫布上面畫原圖,畫水印圖片,有文字就接著畫文字。
上面哪個順序一定不能亂,不然你可能就看不到水印,或則文字了,因為畫在原圖下面去了
繪制水印的代碼如下:
private static Bitmap createWaterMaskBitmap(Bitmap src, Bitmap watermark,
int paddingLeft, int paddingTop) {
if (src == null) {
return null;
}
int width = src.getWidth();
int height = src.getHeight();
//創(chuàng)建一個bitmap
Bitmap newBitmap = Bitmap.createBitmap(width, height, Config.ARGB_8888);// 創(chuàng)建一個新的和SRC長度寬度一樣的位圖
//將該圖片作為畫布
Canvas canvas = new Canvas(newBitmap);
//在畫布 0,0坐標(biāo)上開始繪制原始圖片
canvas.drawBitmap(src, 0, 0, null);
//在畫布上繪制水印圖片
canvas.drawBitmap(watermark, paddingLeft, paddingTop, null);
// 保存
canvas.save(Canvas.ALL_SAVE_FLAG);
// 存儲
canvas.restore();
return newBitmap;
}
繪制文字的代碼如下:
/**
* 繪制文字到中間
*
* @param context
* @param bitmap
* @param text
* @param size
* @param color
* @return
*/
public static Bitmap drawTextToCenter(Context context, Bitmap bitmap, String text,
int size, int color) {
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setColor(color);
paint.setTextSize(dp2px(context, size));
Rect bounds = new Rect();
paint.getTextBounds(text, 0, text.length(), bounds);
return drawTextToBitmap(context, bitmap, text, paint, bounds,
(bitmap.getWidth() - bounds.width()) / 2,
(bitmap.getHeight() + bounds.height()) / 2);
}
/**
* 圖片上繪制文字
*/
private static Bitmap drawTextToBitmap(Context context, Bitmap bitmap, String text,
Paint paint, Rect bounds, int paddingLeft, int paddingTop) {
Config bitmapConfig = bitmap.getConfig();
paint.setDither(true); // 獲取跟清晰的圖像采樣
paint.setFilterBitmap(true);// 過濾一些
if (bitmapConfig == null) {
bitmapConfig = Config.ARGB_8888;
}
bitmap = bitmap.copy(bitmapConfig, true);
Canvas canvas = new Canvas(bitmap);
canvas.drawText(text, paddingLeft, paddingTop, paint);
return bitmap;
}
效果圖如下:

github地址為:https://github.com/chenguo4930/Watermark
git地址為:https://github.com/chenguo4930/Watermark.git
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android雙向選擇控件DoubleSeekBar使用詳解
這篇文章主要為大家詳細(xì)介紹了Android雙向選擇控件DoubleSeekBar的使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-08-08
android判斷應(yīng)用是否已經(jīng)啟動的實例
這篇文章主要介紹了android判斷應(yīng)用是否已經(jīng)啟動的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03
Android開發(fā)中使用WebView控件瀏覽網(wǎng)頁的方法詳解
這篇文章主要介紹了Android開發(fā)中使用WebView控件瀏覽網(wǎng)頁的方法,結(jié)合實例形式較為詳細(xì)的總結(jié)分析了Android WebView控件的功能、布局、設(shè)置、常用方法及相關(guān)操作技巧,需要的朋友可以參考下2017-10-10
Android 模仿QQ側(cè)滑刪除ListView功能示例
這篇文章主要介紹了Android 模仿QQ側(cè)滑刪除ListView功能示例,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-03-03
Android 重力傳感器在游戲開發(fā)中的應(yīng)用
本文主要介紹Android 重力傳感器,這里整理了詳細(xì)的資料,并且詳細(xì)的說明重力傳感器的使用方法,有興趣的小伙伴可以參考下2016-08-08

