解决Android png透明图片转jpg时背景变黑的问题

在做view保存图片后,压缩格式转为jpg的时候出现了黑色背景,其根本原因在于透明背景时背景的情况下,转换为jpg的时候会变成黑色背景,原因是PNG支持透明图而 JPG格式不支持透明背景。

我们的解决方案如下:

/**
 * 把bitmap,png格式的图片 转换成jpg图片
 * 因jpg不支持透明,如png透明图片,则转成白底!
 * @param bitmap  源图
 * @param newFilepath 新图片的路径
 */
public static void convertBitmap2Jpg(Bitmap bitmap, String newImgpath) {
    //复制Bitmap  因为png可以为透明,jpg不支持透明,把透明底明变成白色
   //主要是先创建一张白色图片,然后把原来的绘制至上去
    Bitmap outB=bitmap.copy(Bitmap.Config.ARGB_8888,true);
    Canvas canvas=new Canvas(outB);
    canvas.drawColor(Color.WHITE);
    canvas.drawBitmap(bitmap, 0, 0, null);
    File file = new File(newImgpath);
    try {
        FileOutputStream out = new FileOutputStream(file);
        if (outB.compress(Bitmap.CompressFormat.JPEG, 100, out)) {
            out.flush();
            out.close();
        }
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,966评论 25 709
  • 参考PNG、EPS、bmp、jpg等几种图片格式有什么区别GIF/PNG/JPG和WEBP/base64/apng...
    合肥黑阅读 12,668评论 0 15
  • 最近准备给团队传授图片格式的知识,于是开了谷歌,欲找些 PPT 素材,却发现似乎没有人好好写过与图片相关的知识,要...
    BenzLeung阅读 12,255评论 1 37
  • 1、演讲训练脸还是往常的烧,再继续锻炼,平时要积累素材。 2、昨天由于早起塞车头下午开始痛,平时要早睡,白天要学习...
    一只永不止步的龙阅读 185评论 0 0
  • 心情颇不平静,雷雨交加的夜晚,电火雷鸣,火光交错,让人心惊胆战的的同时,带来了些许的凉意。小暑过后大暑,之后是秋至...
    lovepuff阅读 229评论 0 0