bitmap经compress后保存jpg,原透明部分自动填充为黑色,如何让其填充为白色?

时间:2021-05-07 09:11:12

泣血以告: 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的极致要求,对追求完美的心。。。。。。


http://blog.csdn.net/lmj623565791/article/details/24555655    加深理解