/**
*
* @param pool : 图片池,这个之后会谈到。
* @param toTransform:需要进行处理的图片
* @param outWidth:图片的宽
* @param outHeight:图片的高
* @return 返回处理完的图片
*/
@Override
protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) {
Paint paint = new Paint();
//初始化画笔
paint.setStyle(Paint.Style.FILL);
paint.setAntiAlias(true);
paint.setDither(true);
int width = toTransform.getWidth();
int height = toTransform.getHeight();
int size = Math.min(width,height);
int x = (width - size)/2;
int y = (height - size)/2;
Bitmap result = pool.get(size,size, Bitmap.Config.ARGB_8888);
if (result == null){
result = Bitmap.createBitmap(size,size,Bitmap.Config.ARGB_8888);
}
//
Canvas canvas = new Canvas(result);
int radius = size/2;
canvas.drawCircle(radius,radius,radius,paint);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
canvas.drawBitmap(toTransform,-x,-y,paint);
return result;
}
java类android.graphics.PorterDuffXfermode的实例源码
CircleTransform.java 文件源码
项目:NovelReader
阅读 38
收藏 0
点赞 0
评论 0
IndicationView.java 文件源码
项目:FastBanner
阅读 30
收藏 0
点赞 0
评论 0
private Bitmap drawCircleBitmap(Bitmap bitmap) {
Bitmap circleBitmap = Bitmap.createBitmap(getMeasuredWidth(), getMeasuredHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(circleBitmap);
Paint paint = new Paint();
paint.setDither(true);
paint.setAntiAlias(true);
paint.setFilterBitmap(true);
canvas.drawCircle(getMeasuredWidth() / 2, getMeasuredHeight() / 2, getMeasuredWidth() / 2, paint);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
canvas.drawBitmap(bitmap, 0, 0, paint);
bitmap.recycle();
return circleBitmap;
}
BitmapUtils.java 文件源码
项目:sealtalk-android-master
阅读 36
收藏 0
点赞 0
评论 0
public static Bitmap getRoundedCornerBitmap(Bitmap bitmap) {
Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),
bitmap.getHeight(), Config.ARGB_8888);
Canvas canvas = new Canvas(output);
final int color = 0xff424242;
final Paint paint = new Paint();
final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
final RectF rectF = new RectF(rect);
final float roundPx = 12;
paint.setAntiAlias(true);
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(color);
canvas.drawRoundRect(rectF, roundPx, roundPx, paint);
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(bitmap, rect, rect, paint);
if (null != bitmap) {
bitmap.recycle();
bitmap = null;
}
return output;
}
XCRoundImageView.java 文件源码
项目:PicShow-zhaipin
阅读 32
收藏 0
点赞 0
评论 0
/**
* 获取圆形图片方法
* @param bitmap
* @param pixels
* @return Bitmap
* @author caizhiming
*/
private Bitmap getCircleBitmap(Bitmap bitmap, int pixels) {
Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),
bitmap.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(output);
final int color = 0xff424242;
final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
paint.setAntiAlias(true);
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(color);
int x = bitmap.getWidth();
canvas.drawCircle(x / 2, x / 2, x / 2, paint);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
canvas.drawBitmap(bitmap, rect, rect, paint);
return output;
}
XBitmapUtils.java 文件源码
项目:XFrame
阅读 36
收藏 0
点赞 0
评论 0
/**
* 合并Bitmap
*
* @param bgd 背景Bitmap
* @param fg 前景Bitmap
* @return 合成后的Bitmap
*/
public static Bitmap combineImages(Bitmap bgd, Bitmap fg) {
Bitmap bmp;
int width = bgd.getWidth() > fg.getWidth() ? bgd.getWidth() : fg
.getWidth();
int height = bgd.getHeight() > fg.getHeight() ? bgd.getHeight() : fg
.getHeight();
bmp = Bitmap.createBitmap(width, height, Config.ARGB_8888);
Paint paint = new Paint();
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_ATOP));
Canvas canvas = new Canvas(bmp);
canvas.drawBitmap(bgd, 0, 0, null);
canvas.drawBitmap(fg, 0, 0, paint);
return bmp;
}
RoundedImageView.java 文件源码
项目:android-mvp-interactor-architecture
阅读 32
收藏 0
点赞 0
评论 0
private Bitmap getRoundedCroppedBitmap(Bitmap bitmap, int radius) {
Bitmap finalBitmap;
if (bitmap.getWidth() != radius || bitmap.getHeight() != radius) {
finalBitmap = Bitmap.createScaledBitmap(bitmap, radius, radius, false);
} else {
finalBitmap = bitmap;
}
Bitmap output = Bitmap.createBitmap(finalBitmap.getWidth(),
finalBitmap.getHeight(), Config.ARGB_8888);
Canvas canvas = new Canvas(output);
final Paint paint = new Paint();
final Rect rect = new Rect(0, 0, finalBitmap.getWidth(),
finalBitmap.getHeight());
paint.setAntiAlias(true);
paint.setFilterBitmap(true);
paint.setDither(true);
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(Color.parseColor("#BAB399"));
canvas.drawCircle(finalBitmap.getWidth() / 2,
finalBitmap.getHeight() / 2,
finalBitmap.getWidth() / 2, paint);
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(finalBitmap, rect, rect, paint);
return output;
}
BlurDrawable.java 文件源码
项目:FlickLauncher
阅读 24
收藏 0
点赞 0
评论 0
BlurDrawable(BlurWallpaperProvider provider, float radius, boolean allowTransparencyMode) {
mProvider = provider;
mRadius = radius;
mAllowTransparencyMode = allowTransparencyMode;
if (radius > 0) {
mColorPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
mBlurPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_ATOP));
}
mDownsampleFactor = mProvider.getDownsampleFactor();
initializeRenderScript(mProvider.getContext());
}
DecodeBitmapTask.java 文件源码
项目:showroom-android
阅读 32
收藏 0
点赞 0
评论 0
public static Bitmap getRoundedCornerBitmap(Bitmap bitmap, float pixels, int width, int height) {
final Bitmap output = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
final Canvas canvas = new Canvas(output);
final int sourceWidth = bitmap.getWidth();
final int sourceHeight = bitmap.getHeight();
float xScale = (float) width / bitmap.getWidth();
float yScale = (float) height / bitmap.getHeight();
float scale = Math.max(xScale, yScale);
float scaledWidth = scale * sourceWidth;
float scaledHeight = scale * sourceHeight;
float left = (width - scaledWidth) / 2;
float top = (height - scaledHeight) / 2;
final int color = 0xff424242;
final Paint paint = new Paint();
final Rect rect = new Rect(0, 0, width, height);
final RectF rectF = new RectF(rect);
final RectF targetRect = new RectF(left, top, left + scaledWidth, top + scaledHeight);
paint.setAntiAlias(true);
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(color);
canvas.drawRoundRect(rectF, pixels, pixels, paint);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
canvas.drawBitmap(bitmap, null, targetRect, paint);
return output;
}
ScannerOverlay.java 文件源码
项目:Barcode-Reader
阅读 25
收藏 0
点赞 0
评论 0
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// draw transparent rect
int cornerRadius = 0;
Paint eraser = new Paint();
eraser.setAntiAlias(true);
eraser.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
RectF rect = new RectF(left, top, dpToPx(rectWidth) + left, dpToPx(rectHeight) + top);
canvas.drawRoundRect(rect, (float) cornerRadius, (float) cornerRadius, eraser);
// draw horizontal line
Paint line = new Paint();
line.setColor(lineColor);
line.setStrokeWidth(Float.valueOf(lineWidth));
// draw the line to product animation
if (endY >= top + dpToPx(rectHeight) + frames) {
revAnimation = true;
} else if (endY == top + frames) {
revAnimation = false;
}
// check if the line has reached to bottom
if (revAnimation) {
endY -= frames;
} else {
endY += frames;
}
canvas.drawLine(left, endY, left + dpToPx(rectWidth), endY, line);
invalidate();
}
NoiseEffect.java 文件源码
项目:Mire
阅读 27
收藏 0
点赞 0
评论 0
public NoiseEffect(Bitmap bitmap, int grainFPS, float scale) {
super(bitmap, 0, 0);
shader = new BitmapShader(bitmap, Shader.TileMode.REPEAT, Shader.TileMode.REPEAT);
matrix = new Matrix();
shader.setLocalMatrix(matrix);
paint.setShader(shader);
paint.setAlpha(144);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SCREEN));
lastGrainOffset = System.currentTimeMillis();
this.grainFPS = grainFPS;
this.scale=scale;
}