您的位置:首页 > 移动开发 > Android开发

整理收集Android工具类

2015-04-15 16:00 239 查看
1.读取assets的文件内容

public String getDataFromAssets(String filePath) {

BufferedReader br = null;

StringBuffer sb = new StringBuffer();

try {

br = new BufferedReader(new InputStreamReader(this.getAssets().open(filePath)));

String line;

while ((line = br.readLine()) != null) {

sb.append(line + "\n");

}

} catch (IOException e) {

e.printStackTrace();

} finally {

try {

br.close();

} catch (IOException e) {

e.printStackTrace();

}

}

return sb.toString();

}

2.图像处理工具(三原色调整、底片、老照片、浮雕效果)

/**

* 图像色相、饱和度、亮度的调整功能

*

* @参数: bm

* @参数: hue 色相

* @参数: saturation 饱和度

* @参数: lum 亮度

* @返回值: Bitmap

*

*/

public static Bitmap handleImageEffect(Bitmap bm, float hue,

float saturation, float lum) {

Bitmap bmp = Bitmap.createBitmap(bm.getWidth(), bm.getHeight(),

Config.ARGB_8888);

Canvas canvas = new Canvas(bmp);

Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);

ColorMatrix hueMatrix = new ColorMatrix();

hueMatrix.setRotate(0, hue); // 0:红色

hueMatrix.setRotate(1, hue); // 1:绿色

hueMatrix.setRotate(2, hue); // 2:蓝色

ColorMatrix saturationMatrix = new ColorMatrix();

saturationMatrix.setSaturation(saturation);

ColorMatrix lumMatrix = new ColorMatrix();

lumMatrix.setScale(lum, lum, lum, 1); // 最后一个参数:透明度,1表示全部透明

ColorMatrix imageMatrix = new ColorMatrix();

imageMatrix.postConcat(hueMatrix);

imageMatrix.postConcat(saturationMatrix);

imageMatrix.postConcat(lumMatrix);

paint.setColorFilter(new ColorMatrixColorFilter(imageMatrix));

canvas.drawBitmap(bm, 0, 0, paint);

return bmp;

}

/**

* 底片效果

*

*

* @参数: @param bm

* @返回值: Bitmap

*

* @修改记录(修改时间、作者、原因):

*/

public static Bitmap handleImageNegative(Bitmap bm) {

int width = bm.getWidth();

int height = bm.getHeight();

int color;

int r, g, b, a;

Bitmap bmp = Bitmap

.createBitmap(width, height, Bitmap.Config.ARGB_8888);

int[] oldPx = new int[width * height];

int[] newPx = new int[width * height];

bm.getPixels(oldPx, 0, width, 0, 0, width, height);

for (int i = 0; i < width * height; i++) {

color = oldPx[i];

r = Color.red(color);

g = Color.green(color);

b = Color.blue(color);

a = Color.alpha(color);

r = 255 - r;

g = 255 - g;

b = 255 - b;

if (r > 255) {

r = 255;

} else if (r < 0) {

r = 0;

}

if (g > 255) {

g = 255;

} else if (g < 0) {

g = 0;

}

if (b > 255) {

b = 255;

} else if (b < 0) {

b = 0;

}

newPx[i] = Color.argb(a, r, g, b);

}

bmp.setPixels(newPx, 0, width, 0, 0, width, height);

return bmp;

}

/**

* 老照片效果

*

*

* @参数: @param bm

* @返回值: Bitmap

*

* @修改记录(修改时间、作者、原因):

*/

public static Bitmap handleImagePixelsOldPhoto(Bitmap bm) {

Bitmap bmp = Bitmap.createBitmap(bm.getWidth(), bm.getHeight(),

Bitmap.Config.ARGB_8888);

int width = bm.getWidth();

int height = bm.getHeight();

int color = 0;

int r, g, b, a, r1, g1, b1;

int[] oldPx = new int[width * height];

int[] newPx = new int[width * height];

bm.getPixels(oldPx, 0, bm.getWidth(), 0, 0, width, height);

for (int i = 0; i < width * height; i++) {

color = oldPx[i];

a = Color.alpha(color);

r = Color.red(color);

g = Color.green(color);

b = Color.blue(color);

r1 = (int) (0.393 * r + 0.769 * g + 0.189 * b);

g1 = (int) (0.349 * r + 0.686 * g + 0.168 * b);

b1 = (int) (0.272 * r + 0.534 * g + 0.131 * b);

if (r1 > 255) {

r1 = 255;

}

if (g1 > 255) {

g1 = 255;

}

if (b1 > 255) {

b1 = 255;

}

newPx[i] = Color.argb(a, r1, g1, b1);

}

bmp.setPixels(newPx, 0, width, 0, 0, width, height);

return bmp;

}

/**

* 浮雕效果

*

*

* @参数: @param bm

* @返回值: Bitmap

*

* @修改记录(修改时间、作者、原因):

*/

public static Bitmap handleImagePixelsRelief(Bitmap bm) {

Bitmap bmp = Bitmap.createBitmap(bm.getWidth(), bm.getHeight(),

Bitmap.Config.ARGB_8888);

int width = bm.getWidth();

int height = bm.getHeight();

int color = 0, colorBefore = 0;

int a, r, g, b;

int r1, g1, b1;

int[] oldPx = new int[width * height];

int[] newPx = new int[width * height];

bm.getPixels(oldPx, 0, bm.getWidth(), 0, 0, width, height);

for (int i = 1; i < width * height; i++) {

colorBefore = oldPx[i - 1];

a = Color.alpha(colorBefore);

r = Color.red(colorBefore);

g = Color.green(colorBefore);

b = Color.blue(colorBefore);

color = oldPx[i];

r1 = Color.red(color);

g1 = Color.green(color);

b1 = Color.blue(color);

r = (r - r1 + 127);

g = (g - g1 + 127);

b = (b - b1 + 127);

if (r > 255) {

r = 255;

}

if (g > 255) {

g = 255;

}

if (b > 255) {

b = 255;

}

newPx[i] = Color.argb(a, r, g, b);

}

bmp.setPixels(newPx, 0, width, 0, 0, width, height);

return bmp;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: