@Override protected Bitmap transform(@NonNull Context context, @NonNull BitmapPool pool, @NonNull Bitmap toTransform, int outWidth, int outHeight) { int width = toTransform.getWidth(); int height = toTransform.getHeight(); Bitmap.Config config = toTransform.getConfig() != null ? toTransform.getConfig() : Bitmap.Config.ARGB_8888; Bitmap bitmap = pool.get(width, height, config); Canvas canvas = new Canvas(bitmap); ColorMatrix saturation = new ColorMatrix(); saturation.setSaturation(0f); Paint paint = new Paint(); paint.setColorFilter(new ColorMatrixColorFilter(saturation)); canvas.drawBitmap(toTransform, 0, 0, paint); return bitmap; }
Bitmap sourceBitmap = BitmapFactory.decodeFile(imgPath); float[] colorTransform = { 0, 1f, 0, 0, 0, 0, 0, 0f, 0, 0, 0, 0, 0, 0f, 0, 0, 0, 0, 1f, 0}; ColorMatrix colorMatrix = new ColorMatrix(); colorMatrix.setSaturation(0f); //Remove Colour colorMatrix.set(colorTransform); //Apply the Red ColorMatrixColorFilter colorFilter = new ColorMatrixColorFilter(colorMatrix); Paint paint = new Paint(); paint.setColorFilter(colorFilter); Display display = getWindowManager().getDefaultDisplay(); Bitmap resultBitmap = Bitmap.createBitmap(sourceBitmap, 0, (int)(display.getHeight() * 0.15), display.getWidth(), (int)(display.getHeight() * 0.75)); image.setImageBitmap(resultBitmap); Canvas canvas = new Canvas(resultBitmap); canvas.drawBitmap(resultBitmap, 0, 0, paint);
mPaint.setShader(s); mPaint.setStyle(Paint.Style.STROKE); mPaint.setStrokeWidth(32); float r = CENTER_X - mPaint.getStrokeWidth()*0.5f; canvas.translate(CENTER_X, CENTER_X); canvas.drawOval(new RectF(-r, -r, r, r), mPaint); canvas.drawCircle(0, 0, CENTER_RADIUS, mCenterPaint); int b = Color.blue(color); ColorMatrix cm = new ColorMatrix(); ColorMatrix tmp = new ColorMatrix(); cm.setRGB2YUV(); tmp.setRotate(0, deg); cm.postConcat(tmp); tmp.setYUV2RGB(); cm.postConcat(tmp); final float[] a = cm.getArray();
protected Drawable convertToGrayscale(Drawable drawable) { ColorMatrix matrix = new ColorMatrix(); matrix.setSaturation(0); ColorMatrixColorFilter filter = new ColorMatrixColorFilter(matrix); drawable.setColorFilter(filter); return drawable; }
public static void setSepiaColorFilter(Drawable drawable) { if (drawable == null) return; final ColorMatrix matrixA = new ColorMatrix(); // making image B&W matrixA.setSaturation(0); final ColorMatrix matrixB = new ColorMatrix(); // applying scales for RGB color values matrixB.setScale(1f, .95f, .82f, 1.0f); matrixA.setConcat(matrixB, matrixA); final ColorMatrixColorFilter filter = new ColorMatrixColorFilter(matrixA); drawable.setColorFilter(filter); }
public Bitmap toGrayscale(Bitmap bmpOriginal) { int width, height; height = bmpOriginal.getHeight(); width = bmpOriginal.getWidth(); Bitmap bmpGrayscale = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); Canvas c = new Canvas(bmpGrayscale); Paint paint = new Paint(); ColorMatrix cm = new ColorMatrix(); cm.setSaturation(0); ColorMatrixColorFilter f = new ColorMatrixColorFilter(cm); paint.setColorFilter(f); c.drawBitmap(bmpOriginal, 0, 0, paint); return bmpGrayscale; }
@Override public RequestHandler.Result transform(RequestHandler.Result source) { Bitmap bitmap = source.getBitmap(); if (bitmap == null) { return source; } Bitmap result = createBitmap(bitmap.getWidth(), bitmap.getHeight(), bitmap.getConfig()); Bitmap noise; try { noise = picasso.load(R.drawable.noise).get(); } catch (IOException e) { throw new RuntimeException("Failed to apply transformation! Missing resource."); } BitmapShader shader = new BitmapShader(noise, REPEAT, REPEAT); ColorMatrix colorMatrix = new ColorMatrix(); colorMatrix.setSaturation(0); ColorMatrixColorFilter filter = new ColorMatrixColorFilter(colorMatrix); Paint paint = new Paint(ANTI_ALIAS_FLAG); paint.setColorFilter(filter); Canvas canvas = new Canvas(result); canvas.drawBitmap(bitmap, 0, 0, paint); paint.setColorFilter(null); paint.setShader(shader); paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.MULTIPLY)); canvas.drawRect(0, 0, canvas.getWidth(), canvas.getHeight(), paint); bitmap.recycle(); noise.recycle(); return new RequestHandler.Result(result, source.getLoadedFrom(), source.getExifRotation()); }
/** * * @param bmp input bitmap * @param contrast 0..10 1 is default * @param brightness -255..255 0 is default * @return new bitmap */ public static Bitmap changeBitmapContrastBrightness(Bitmap bmp, float contrast, float brightness) { ColorMatrix cm = new ColorMatrix(new float[] { contrast, 0, 0, 0, brightness, 0, contrast, 0, 0, brightness, 0, 0, contrast, 0, brightness, 0, 0, 0, 1, 0 }); Bitmap ret = Bitmap.createBitmap(bmp.getWidth(), bmp.getHeight(), bmp.getConfig()); Canvas canvas = new Canvas(ret); Paint paint = new Paint(); paint.setColorFilter(new ColorMatrixColorFilter(cm)); canvas.drawBitmap(bmp, 0, 0, paint); return ret; }
public BezelImageView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); // Attribute initialization final TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.BezelImageView, defStyle, R.style.BezelImageView); mMaskDrawable = a.getDrawable(R.styleable.BezelImageView_biv_maskDrawable); if (mMaskDrawable != null) { mMaskDrawable.setCallback(this); } mDrawCircularShadow = a.getBoolean(R.styleable.BezelImageView_biv_drawCircularShadow, true); mSelectorColor = a.getColor(R.styleable.BezelImageView_biv_selectorOnPress, 0); a.recycle(); // Other initialization mBlackPaint = new Paint(); mBlackPaint.setColor(0xff000000); mMaskedPaint = new Paint(); mMaskedPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); // Always want a cache allocated. mCacheBitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888); // Create a desaturate color filter for pressed state. ColorMatrix cm = new ColorMatrix(); cm.setSaturation(0); mDesaturateColorFilter = new ColorMatrixColorFilter(cm); //create a selectorFilter if we already have a color if (mSelectorColor != 0) { this.mSelectorFilter = new PorterDuffColorFilter(Color.argb(mSelectorAlpha, Color.red(mSelectorColor), Color.green(mSelectorColor), Color.blue(mSelectorColor)), PorterDuff.Mode.SRC_ATOP); } }
final BitmapFactory.Options options = new BitmapFactory.Options(); options.inPreferredConfig = Bitmap.Config.ARGB_8888; options.inScaled = false; // Load source grayscale bitmap Bitmap grayscale = BitmapFactory.decodeResource(getResources(), R.drawable.my_grayscale_mask, options); // Place for alpha mask. It's specifically ARGB_8888 not ALPHA_8, // ALPHA_8 for some reason didn't work out for me. Bitmap alpha = Bitmap.createBitmap(grayscale.getWidth(), grayscale.getHeight(), Bitmap.Config.ARGB_8888); float[] matrix = new float[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0}; Paint grayToAlpha = new Paint(); grayToAlpha.setColorFilter(new ColorMatrixColorFilter(new ColorMatrix(matrix))); Canvas alphaCanvas = new Canvas(alpha); // Make sure nothing gets scaled during drawing alphaCanvas.setDensity(Bitmap.DENSITY_NONE); // Draw grayscale bitmap on to alpha canvas, using color filter that // takes alpha from red channel alphaCanvas.drawBitmap(grayscale, 0, 0, grayToAlpha); // Bitmap alpha now has usable alpha channel!
height = bmpOriginal.getHeight(); width = bmpOriginal.getWidth(); int depth = 20; Paint paint = new Paint(); ColorMatrix cm = new ColorMatrix(); cm.setScale(.3f, .3f, .3f, 1.0f); ColorMatrixColorFilter f = new ColorMatrixColorFilter(cm); paint.setColorFilter(f); canvas.drawBitmap(bmpOriginal, 0, 0, paint); for(int x=0; x < width; x++) { for(int y=0; y < height; y++) { c = bmpOriginal.getPixel(x, y);
@Test public void shouldReceiveDescriptionWhenDrawABitmapToCanvasWithAPaintEffect() throws Exception { Bitmap bitmap1 = create("Bitmap One"); Bitmap bitmap2 = create("Bitmap Two"); Canvas canvas = new Canvas(bitmap1); Paint paint = new Paint(); paint.setColorFilter(new ColorMatrixColorFilter(new ColorMatrix())); canvas.drawBitmap(bitmap2, new Matrix(), paint); assertThat(shadowOf(bitmap1).getDescription()) .isEqualTo("Bitmap One\n" + "Bitmap Two with ColorMatrixColorFilter<1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0>" + " transformed by Matrix[pre=[], set={}, post=[]]"); }
public void setColor(int color) { if (mPaint == null) { mPaint = new Paint(Paint.FILTER_BITMAP_FLAG); } if (color != 0) { ColorMatrix m1 = new ColorMatrix(); m1.setSaturation(0); ColorMatrix m2 = new ColorMatrix(); ThemeUtils.setColorScaleOnMatrix(color, m2); m1.postConcat(m2); animateFilterTo(m1.getArray()); } else { if (mCurrentFilter == null) { mPaint.setColorFilter(null); invalidate(); } else { animateFilterTo(new ColorMatrix().getArray()); } } }
public PageWidget(Context context, String bookId, List<BookMixAToc.mixToc.Chapters> chaptersList, OnReadStateChangeListener listener) { super(context, bookId, chaptersList, listener); mPath0 = new Path(); mPath1 = new Path(); mMaxLength = (float) Math.hypot(mScreenWidth, mScreenHeight); mPaint = new Paint(); mPaint.setStyle(Paint.Style.FILL); createDrawable(); ColorMatrix cm = new ColorMatrix();//设置颜色数组 float array[] = {0.55f, 0, 0, 0, 80.0f, 0, 0.55f, 0, 0, 80.0f, 0, 0, 0.55f, 0, 80.0f, 0, 0, 0, 0.2f, 0}; cm.set(array); mColorMatrixFilter = new ColorMatrixColorFilter(cm); mMatrix = new Matrix(); mTouch.x = 0.01f; // 不让x,y为0,否则在点计算时会有问题 mTouch.y = 0.01f; }
public static Bitmap ConvertToBlackAndWhite(Bitmap sampleBitmap){ ColorMatrix bwMatrix =new ColorMatrix(); bwMatrix.setSaturation(0); final ColorMatrixColorFilter colorFilter= new ColorMatrixColorFilter(bwMatrix); Bitmap rBitmap = sampleBitmap.copy(Bitmap.Config.ARGB_8888, true); Paint paint=new Paint(); paint.setColorFilter(colorFilter); Canvas myCanvas =new Canvas(rBitmap); myCanvas.drawBitmap(rBitmap, 0, 0, paint); return rBitmap; }
bitmap = BitmapFactory.decodeResource(ctx.getResources(), R.drawable.bitmap); mask = BitmapFactory.decodeResource(ctx.getResources(), R.drawable.mask); float[] src = { 0, 0, 0, 0, 255, 0, 0, 0, 0, 255, 0, 0, 0, 0, 255, 1, 1, 1, -1, 0, }; ColorMatrix cm = new ColorMatrix(src); ColorMatrixColorFilter filter = new ColorMatrixColorFilter(cm); maskPaint = new Paint(); maskPaint.setColorFilter(filter); maskPaint.setXfermode(new PorterDuffXfermode(Mode.DST_IN)); filteredBitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888); Canvas c = new Canvas(filteredBitmap); c.drawBitmap(bitmap, 0, 0, null); c.drawBitmap(mask, 0, 0, maskPaint); colorFilterPaint = new Paint(); colorFilterPaint.setColorFilter(new LightingColorFilter(0xffffff, 0x880000));
Bitmap img = BitmapFactory.decodeResource(this.getResources(), drawable.testimage); Paint paint = new Paint(); ColorMatrix cm = new ColorMatrix(); float a = 77f; float b = 151f; float c = 28f; float t = 120 * -256f; cm.set(new float[] { a, b, c, 0, t, a, b, c, 0, t, a, b, c, 0, t, 0, 0, 0, 1, 0 }); paint.setColorFilter(new ColorMatrixColorFilter(cm)); canvas.drawBitmap(img, 0, 0, paint);
@Test public void withColorFilterSet_draw_shouldCopyDescriptionToCanvas() throws Exception { BitmapDrawable drawable = (BitmapDrawable) resources.getDrawable(R.drawable.an_image); drawable.setColorFilter(new ColorMatrixColorFilter(new ColorMatrix())); Canvas canvas = new Canvas(); drawable.draw(canvas); assertThat(shadowOf(canvas).getDescription()).isEqualTo("Bitmap for resource:org.robolectric:drawable/an_image with ColorMatrixColorFilter<1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0>"); }
private void updateFilter() { if (mGhostModeEnabled) { if (sGhostModeMatrix == null) { sGhostModeMatrix = new ColorMatrix(); sGhostModeMatrix.setSaturation(0); sTempMatrix.set(new float[] { range, 0, 0, 0, GHOST_MODE_MIN_COLOR_RANGE, 0, range, 0, 0, GHOST_MODE_MIN_COLOR_RANGE, 0, 0, range, 0, GHOST_MODE_MIN_COLOR_RANGE, 0, 0, 0, 1, 0 }); sGhostModeMatrix.preConcat(sTempMatrix); mPaint.setColorFilter(new ColorMatrixColorFilter(sGhostModeMatrix)); } else { setBrightnessMatrix(sTempMatrix, mBrightness); sTempMatrix.postConcat(sGhostModeMatrix); mPaint.setColorFilter(new ColorMatrixColorFilter(sTempMatrix)); sCachedBrightnessFilter.put(mBrightness, filter); mPaint.setColorFilter(filter); } else { mPaint.setColorFilter(null);
void changeBrightness(int value) { float brightness = value / 2; mColorMatrix.reset(); mColorMatrix.set(new float[]{ 1, 0, 0, 0, brightness, 0, 1, 0, 0, brightness, 0, 0, 1, 0, brightness, 0, 0, 0, 1, 0 }); mAdjustPaint.setColorFilter(new ColorMatrixColorFilter(mColorMatrix)); getViewState().onImageAdjusted(mAdjustPaint); }