-
Notifications
You must be signed in to change notification settings - Fork 31
/
Copy pathImageData
85 lines (76 loc) · 1.85 KB
/
ImageData
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
package com.justenjoy.util;
import android.graphics.Bitmap;
/**
* Created by 王洪贺 on 15/8/5.
*/
public class ImageData {
private Bitmap mBitmap;
private int[] pixels;
public int width;
public int height;
private int alpha = (0xFF << 24);
public ImageData(Bitmap bitmap) {
this.mBitmap = bitmap;
this.width = mBitmap.getWidth(); // 获取位图的宽
this.height = mBitmap.getHeight(); // 获取位图的高
this.pixels = new int[width * height];// 通过位图的大小创建像素点数组
mBitmap.getPixels(pixels, 0, width, 0, 0, width, height); // 根据宽高获取像素
}
/**
* 获取某一个像素的R值
*
* @param widthPx
* @param heightPx
* @return
*/
public int getRComponent(int widthPx, int heightPx) {
return (getRGB(widthPx, heightPx) & 0x00FF0000) >> 16;
}
/**
* 获取某一个像素G的值
*
* @param widthPx
* @param heightPx
* @return
*/
public int getGComponent(int widthPx, int heightPx) {
return (getRGB(widthPx, heightPx) & 0x0000FF00) >> 8;
}
/**
* 获取某一个像素B的值
*
* @param widthPx
* @param heightPx
* @return
*/
public int getBComponent(int widthPx, int heightPx) {
return (getRGB(widthPx, heightPx) & 0x000000FF);
}
public int getRGB(int widthPx, int heightPx) {
return pixels[width * heightPx + widthPx];
}
/**
* 设置某一个像素的颜色
*
* @param widthPx
* @param heightPx
* @param R
* @param G
* @param B
*/
public void setPixelColor(int widthPx, int heightPx, int R, int G, int B) {
pixels[width * heightPx + widthPx] = alpha | R << 16 | G << 8 | B;
}
/**
* 获取改变后的bitmap图像
*
* @return
*/
public Bitmap getBitmap() {
Bitmap bitmap = Bitmap.createBitmap(width, height,
Bitmap.Config.ARGB_8888);
bitmap.setPixels(pixels, 0, width, 0, 0, width, height);
mBitmap.recycle();
return bitmap;
}
}