获取图片倒影效果
獲取圖片倒影效果
?
View Code 1 /** 2 * 獲取傳入圖片的倒影 3 * 4 * @param originalImage 原始圖片 5 * @param reflectionGap 原始圖片與倒影圖片的間距 6 * @param percentage 倒影是原圖的高度的百分比 . 0< percentage < 1 7 * @param onlyReflect true, 只返回倒影圖片,倒影有蒙板效果; 8 * false, 返回原圖 + 間距 + 倒影(從上到下的順序), 間距和倒影都有蒙板效果 9 * @return Bitmap; 10 */ 11 public static Bitmap createReflectionImageWithOrigin(Bitmap originalImage, int reflectionGap, float percentage, boolean onlyReflect){ 12 13 int width = originalImage.getWidth(); 14 int height = originalImage.getHeight(); 15 int preHeight = (int)(height * percentage); 16 17 Matrix matrix = new Matrix(); 18 matrix.preScale(1, -1); // 圖片矩陣變換(從低部向頂部的倒影) 19 20 Bitmap reflectionImage = Bitmap.createBitmap(originalImage, 0, (height - preHeight), width, preHeight, matrix, false); // 截取原圖下半部分 21 22 Bitmap reflectionBitmp = Bitmap.createBitmap(width, preHeight, Config.ARGB_8888); 23 24 Canvas canvas = new Canvas(reflectionBitmp);// 繪制倒影圖 25 Paint defaultPaint = new Paint(); 26 canvas.drawRect(0, height / 5, width, height / 5, defaultPaint); 27 canvas.drawBitmap(reflectionImage, 0, 0, null); 28 29 //給倒影圖片添加遮罩效果 30 Paint paint = new Paint(); 31 LinearGradient shader = new LinearGradient(0, 0, 0, reflectionBitmp.getHeight(), 0x70ffffff, 0x00ffffff, TileMode.CLAMP); 32 paint.setShader(shader); // 線性漸變效果 33 paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN)); // 倒影遮罩效果 34 canvas.drawRect(0, 0, width, reflectionBitmp.getHeight(), paint); // 繪制倒影的陰影效果 35 36 Bitmap tempReflectionBitmap = reflectionBitmp; 37 38 if (! onlyReflect) { 39 tempReflectionBitmap = Bitmap.createBitmap(width, (height + preHeight), Config.ARGB_8888); // 創建倒影圖片 40 canvas = new Canvas(tempReflectionBitmap);// 繪制倒影圖(原圖 + 間距 + 倒影) 41 canvas.drawBitmap(originalImage, 0, 0, null); // 繪制原圖 42 canvas.drawRect(0, height,width,height + reflectionGap, defaultPaint); // 繪制原圖與倒影的間距 43 canvas.drawRect(0, height, width, height + reflectionGap, paint); // 繪制間距的陰影效果 44 canvas.drawBitmap(reflectionBitmp, 0, height + reflectionGap, null); // 繪制倒影圖 45 } 46 47 return tempReflectionBitmap; 48 }轉載于:https://www.cnblogs.com/zhangyulogin/archive/2012/10/31/2748297.html
總結
- 上一篇: js 栈(进制转换)
- 下一篇: OpenCL编程入门(一)