泣血以告: bitmap经compress后保存jpg,原透明部分自动填充为黑色,如何让其填充为白色?
答案如下代码:
(其中,圆角程序主要部分为百度所得,来源众多,不知出处,故在此感谢大家,如有作者需标明出处请留言!)
(本文仅对重点标出的三行填充代码负责!)
/** * 画成圆角图片 */ public Bitmap getRoundCornerImage(Bitmap bitmap, int roundPixels) { /**创建一个和原始图片一样大小位图*/ Bitmap roundConcerImage = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888); /**创建带有位图roundConcerImage的画布*/ Canvas canvas = new Canvas(roundConcerImage); /**创建画笔 */ Paint paint = new Paint(); /**创建一个和原始图片一样大小的矩形*/ Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); RectF rectF = new RectF(rect); /**去锯齿*/ paint.setAntiAlias(true); /**画一个和原始图片一样大小的圆角矩形*/ canvas.drawRoundRect(rectF, roundPixels, roundPixels, paint); /**设置相交模式 */ paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN)); /**把图片画到矩形去 */ canvas.drawBitmap(bitmap, rect, rectF, paint); //////////////////////////////////////////////////////////////////////////////////// /**引时圆角区域为透明,给其填充白色 */ paint.setColor(Color.WHITE); paint.setXfermode(new PorterDuffXfermode(Mode.DST_ATOP)); canvas.drawRect(rectF, paint); /////////////////////////////////////////////////////////////////////////////////// return roundConcerImage; }
有同学问:为什么一定要保存JPG,保存PNG不就行了嘛?
答:PNG个头大呀,JPG才4K的小图片保存PNG成16K,So,本着对用户负责,对自己APP的极致要求,对追求完美的心。。。。。。