package com.test;
import android.R.integer;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.ColorMatrix;
import android.graphics.ColorMatrixColorFilter;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.RectF;
import android.os.Bundle;
import android.view.View;
public class NewActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(new _view(this));
}
class _view extends View
{
public _view(Context context)
{
super(context);
// TODO Auto-generated constructor stub
}
@Override
public void onDraw(Canvas canvas)
{
RectF rectF = new RectF(30f, 300f, 400f, 800f);
Matrix _Matrix = new Matrix();
Paint _Paint = new Paint();
_Paint.setColor(Color.BLUE);
canvas.drawArc(rectF, 0f, 180f, true, _Paint);
Bitmap bitmap = BitmapFactory.decodeFile("data/data/com.test/filse/psb.jpg");
int psb[] = new int[bitmap.getWidth() * bitmap.getHeight()] ;
bitmap.getPixels(psb, 0, bitmap.getWidth(), 0, 0, bitmap.getWidth(), bitmap.getHeight());
int width = bitmap.getWidth();
int height = bitmap.getHeight();
Bitmap _bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
int pixColor = 0;
int pixR = 0;
int pixG = 0;
int pixB = 0;
int newR = 0;
int newG = 0;
int newB = 0;
int[] pixels = new int[width * height];
bitmap.getPixels(pixels, 0, width, 0, 0, width, height);
for (int i = 0; i < height; i++)
{
for (int k = 0; k < width; k++)
{
pixColor = pixels[width * i + k];
pixR = Color.red(pixColor);
pixG = Color.green(pixColor);
pixB = Color.blue(pixColor);
newR = (int) (0.393 * pixR + 0.769 * pixG + 0.189 * pixB);
newG = (int) (0.349 * pixR + 0.686 * pixG + 0.168 * pixB);
newB = (int) (0.272 * pixR + 0.534 * pixG + 0.131 * pixB);
int newColor = Color.argb(255, newR > 255 ? 255 : newR, newG > 255 ? 255 : newG, newB > 255 ? 255 : newB);
pixels[width * i + k] = newColor;
}
}
_bitmap.setPixels(pixels, 0, width, 0, 0, width, height);
/*
int count = 0;
int preColor = 0;
int prepreColor = 0;
int color = 0;
for (int i = 0; i < bitmap.getWidth(); i++)
{
for (int j = 0; j < bitmap.getHeight(); j++)
{
int curr_color = psb[count];
// int curr_color = psb[i*bitmap.getHeight() + j];
int r = Color.red(prepreColor) - Color.red(curr_color) +127;
int g = Color.green(prepreColor) - Color.green(curr_color) +127;
int b = Color.blue(prepreColor) - Color.blue(curr_color) +127;
int a = Color.alpha(prepreColor);
int modif_color = Color.argb(a, r, g, b);
// bitmap.setPixel(i, j, modif_color);
// psb[i*bitmap.getHeight() + j] = modif_color;
psb[count] = modif_color;
prepreColor = preColor;
preColor = curr_color;
count++;
}
}*/
canvas.drawBitmap(_bitmap,0,0,null);
/*
Rect _Rect = new Rect(300, 300, 500, 500);
Rect _Rect2 = new Rect(20, 20, 170, 170);
// canvas.drawBitmap(bitmap, null, _Rect, null);
canvas.drawBitmap(bitmap,null, _Rect2, _Paint);
_Matrix.setRotate(45f, 300, 300);
canvas.setMatrix(_Matrix);
ColorMatrix _ColorMatrix = new ColorMatrix();
_ColorMatrix.setSaturation(0);
ColorMatrixColorFilter _ColorMatrixColorFilter = new ColorMatrixColorFilter(_ColorMatrix);
_Paint.setColorFilter(_ColorMatrixColorFilter);
canvas.drawBitmap(bitmap, null, _Rect, _Paint);
*/
}
}
}
android上特效(源代码)
最新推荐文章于 2021-05-26 03:47:08 发布