編輯:關於Android編程
給圖片添加水印的基本思路都是載入原圖,添加文字或者載入水印圖片,保存圖片這三個部分
添加水印圖片:
private Bitmap createWaterMaskImage(Context gContext, Bitmap src, Bitmap watermark) { String tag = "createBitmap"; Log.d(tag, "create a new bitmap"); if (src == null) { return null; } int w = src.getWidth(); int h = src.getHeight(); int ww = watermark.getWidth(); int wh = watermark.getHeight(); // create the new blank bitmap Bitmap newb = Bitmap.createBitmap(w, h, Config.ARGB_8888);// 創建一個新的和SRC長度寬度一樣的位圖 Canvas cv = new Canvas(newb); // draw src into cv.drawBitmap(src, 0, 0, null);// 在 0,0坐標開始畫入src // draw watermark into cv.drawBitmap(watermark, 20, 20, null);// 在src的右下角畫入水印 // save all clip cv.save(Canvas.ALL_SAVE_FLAG);// 保存 // store cv.restore();// 存儲 return newb; }添加文字
public static Bitmap scaleWithWH(Bitmap src, double w, double h) { if (w == 0 || h == 0 || src == null) { return src; } else { // 記錄src的寬高 int width = src.getWidth(); int height = src.getHeight(); // 創建一個matrix容器 Matrix matrix = new Matrix(); // 計算縮放比例 float scaleWidth = (float) (w / width); float scaleHeight = (float) (h / height); // 開始縮放 matrix.postScale(scaleWidth, scaleHeight); // 創建縮放後的圖片 return Bitmap.createBitmap(src, 0, 0, width, height, matrix, true); } } public Bitmap drawTextToBitmap(Context gContext, int gResId, String gText) { Resources resources = gContext.getResources(); float scale = resources.getDisplayMetrics().density; Bitmap bitmap = BitmapFactory.decodeResource(resources, gResId); bitmap = scaleWithWH(bitmap, 300*scale, 300*scale); android.graphics.Bitmap.Config bitmapConfig = bitmap.getConfig(); // set default bitmap config if none if(bitmapConfig == null) { bitmapConfig = android.graphics.Bitmap.Config.ARGB_8888; } // resource bitmaps are imutable, // so we need to convert it to mutable one bitmap = bitmap.copy(bitmapConfig, true); Canvas canvas = new Canvas(bitmap); // new antialised Paint Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); // text color - #3D3D3D paint.setColor(Color.RED); paint.setTextSize((int) (18 * scale)); paint.setDither(true); //獲取跟清晰的圖像采樣 paint.setFilterBitmap(true);//過濾一些 Rect bounds = new Rect(); paint.getTextBounds(gText, 0, gText.length(), bounds); int x = 30; int y = 30; canvas.drawText(gText, x * scale, y * scale, paint); return bitmap; }
本文實例分析了Android可循環顯示圖像的Android Gallery組件用法。分享給大家供大家參考,具體如下:Gallery組件主要用於橫向顯示圖像列表,不過按常規
re管理器是玩轉安卓的一個必不可少的神器之一,基於強大的文件管理功能,可以查看系統system分區文件,配合root授權使用,簡直就是可以發揮安卓的極致。r
其實寫分析源碼文章總會顯得很復雜很乏味,但是梳理自己看源碼時的一些總結也是一種提高。這篇博客分析下Activity啟動過程源碼,我會盡量說得簡單點。個人的觀點是看源碼不能
之前群裡面有朋友問我,有沒有關於本地圖片選擇的Demo,類似微信的效果,他說網上沒有這方面的Demo,問我能不能寫一篇關於這個效果的Demo,於是我研究了下微信的本地圖片