@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_grayscale);
ButterKnife.bind(
this
);
BitmapDrawable bd = (BitmapDrawable) Original_ImageView.getDrawable();
Bitmap bitmap = bd.getBitmap();
Log.d(TAG,
" w="
+ bitmap.getWidth() +
", h="
+ bitmap.getHeight() +
", c="
+ bitmap.getConfig().toString());
Bitmap matrix = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas =
new
Canvas(matrix);
Paint paint =
new
Paint();
ColorMatrix colorMatrix =
new
ColorMatrix();
colorMatrix.setSaturation(0f);
ColorMatrixColorFilter colorMatrixColorFilter =
new
ColorMatrixColorFilter(colorMatrix);
paint.setColorFilter(colorMatrixColorFilter);
canvas.drawBitmap(bitmap, 0f, 0f, paint);
Matrix_ImageView.setImageBitmap(matrix);
Bitmap sunflower = XUtils.BitmapUtil.decodeMutableBitmapFromResourceId(
this
, R.drawable.sunflower);
Bitmap lightness = grayScale(sunflower, XUtils.GrayScaleUtil.GrayScale.Lightness);
Lightness_ImageView.setImageBitmap(lightness);
Bitmap average = grayScale(sunflower, XUtils.GrayScaleUtil.GrayScale.Average);
Average_ImageView.setImageBitmap(average);
Bitmap luminosity = grayScale(sunflower, XUtils.GrayScaleUtil.GrayScale.Luminosity);
Luminosity_ImageView.setImageBitmap(luminosity);
Bitmap bt709 = grayScale(sunflower, XUtils.GrayScaleUtil.GrayScale.BT709);
BT709_ImageView.setImageBitmap(bt709);
Bitmap rmy = grayScale(sunflower, XUtils.GrayScaleUtil.GrayScale.RMY);
RMY_ImageView.setImageBitmap(rmy);
Bitmap y = grayScale(sunflower, XUtils.GrayScaleUtil.GrayScale.Y);
Y_ImageView.setImageBitmap(y);
}
public
Bitmap grayScale(
final
Bitmap bitmap, XUtils.GrayScaleUtil.GrayScale grayScale) {
if
(
null
== bitmap ||
null
== grayScale) {
return
null
;
}
Bitmap rs = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas =
new
Canvas(rs);
Paint paint =
new
Paint();
for
(
int
x =
0
, w = bitmap.getWidth(); x < w; x++) {
for
(
int
y =
0
, h = bitmap.getHeight(); y < h; y++) {
int
c = bitmap.getPixel(x, y);
int
a = Color.alpha(c);
int
r = Color.red(c);
int
g = Color.red(c);
int
b = Color.blue(c);
int
gc = grayScale.grayScale(r, g, b);
paint.setColor(Color.argb(a, gc, gc, gc));
canvas.drawPoint(x, y, paint);
}
}
return
rs;
}