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

时间:2022-03-17 00:37:48

泣血以告: 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    加深理解