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 png透明图片转jpg时背景变黑的解决方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • 详解Android .9.png “点九”图片的使用

    "点九"图片概述 "点九"是andriod平台的应用软件开发里的一种特殊的图片形式,文件扩展名为:.9.png. 我们都知道android平台有多种不同的分辨率,很多控件的切图文件在被放大拉伸后,边角会模糊失真,而使用点九PNG技术,可以将图片横向和纵向同时进行拉伸,以实现在多分辨率下的完美显示效果. 而且使用*.9.png图片技术,只需要采用一套界面切图去适配不同的分辨率,大幅减少安装包的大小.程序不需要专门做处理的就可以实现其拉伸,也减少了代码量和开发工作量.

  • android 9PNG图片制作过程(图文介绍)

    在android开发的过程中我们经常因为没有好的美工图片失真,这样使界面看起来要逊色很多,有的时候可能我们会想在drawable-hdpi,ldpi,mdpi下放不同分辨率的图片,这样虽然可以有效避免图片失真,但是这样一是麻烦而是图片资源似的整个项目太大.所以有时候我们想要是有些图片可以拉伸而不失真多好啊,这时候我们就要想起android为我们提供的9.png格式的图片了,9.png格式的图片是安卓平台上新创的一种被拉伸却不失真的玩意. 学会了这种9PNG图片的制作,我们以后做项目的时候一些因为

  • Android截屏保存png图片的实例代码

    复制代码 代码如下: import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException; import android.app.Activity;import android.graphics.Bitmap;import android.graphics.Rect;import android.util.Log;import android.view.View; publ

  • Android编程调用系统自带的拍照功能并返回JPG文件示例【附demo源码下载】

    本文实例讲述了Android编程调用系统自带的拍照功能返回JPG文件.分享给大家供大家参考,具体如下: package com.eboy.testcamera1; import java.io.File; import java.io.FileOutputStream; import android.app.Activity; import android.content.Intent; import android.graphics.Bitmap; import android.os.Bund

  • Android把svg图片转为jpg保存到相册图库

    我上一篇文章写了<Android加载html中的svg格式图片进行显示〉,有兴趣的同学可以去看看地址:Android加载html中svg格式图片进行显示 但是我们一般在浏览图片时,还会有保存图片到相册或图库的操作,而Android手机自带的相册或图库是不支持查看svg格式的图片的,所以我们需要把svg格式的图片转为jpg或png格式再进行保存,我的例子是保存为jpg格式,png也是一样的,我这里写了个工具类,可以保存jpg,png格式的图片,也可以把svg图片转为jpg进行保存.接下来我贴下我的

  • Android中.9.png图片的使用及制作

    我们有一个TextView,其里面的内容是可以通过代码动态改变的,我们想用一张图片作为TextView的背景,实现类似于手机QQ对话中的气泡文本效果. TextView定义如下: <TextView android:text="@string/hello_world" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravit

  • Android png透明图片转jpg时背景变黑的解决方法

    在做view保存图片后,压缩格式转为jpg的时候出现了黑色背景,其根本原因在于透明背景时背景的情况下,转换为jpg的时候会变成黑色背景,原因是PNG支持透明图而 JPG格式不支持透明背景. 我们的解决方案如下: /** * 把bitmap,png格式的图片 转换成jpg图片 * 因jpg不支持透明,如png透明图片,则转成白底! * @param bitmap 源图 * @param newFilepath 新图片的路径 */ public static void convertBitmap2J

  • Android Listview 滑动过程中提示图片重复错乱的原因及解决方法

    主要分析Android中Listview滚动过程造成的图片显示重复.错乱.闪烁的原因及解决方法,顺便跟进Listview的缓存机制. 1.原因分析 Listview item 缓存机制:为了使得性能更优,Listview会缓存行item(某行对应的view).listview通过adapter的getview函数获得每行的item.滑动过程中, a.如果某行item已经划出屏幕,若该item不在缓存内,则put进缓存,否则更新缓存: b.获取滑入屏幕的行item之前会先判断缓存中是否有可用的it

  • Android实现让图片在屏幕上任意移动的方法(拖拽功能)

    本文实例讲述了Android实现让图片在屏幕上任意移动的方法.分享给大家供大家参考,具体如下: public class DragExampleActivity extends Activity { Bitmap mBitmap; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInst

  • Android Force Close 出现的异常原因分析及解决方法

    一.原因: forceclose,意为强行关闭,当前应用程序发生了冲突. NullPointExection(空指针),IndexOutOfBoundsException(下标越界),就连Android API使用的顺序错误也可能导致(比如setContentView()之前进行了findViewById()操作)等等一系列未捕获异常 二.如何避免 如何避免弹出Force Close窗口 ,可以实现Thread.UncaughtExceptionHandler接口的uncaughtExcepti

  • Android 5.1 WebView内存泄漏问题及快速解决方法

    问题背景 在排查项目内存泄漏过程中发现了一些由WebView引起的内存泄漏,经过测试发现该部分泄漏只会出现在android 5.1及以上的机型.虽然项目使用WebView的场景并不多,但秉承着一个泄漏都不放过的精神,我们肯定要把它给解决了. 遇到的问题 项目中使用WebView的页面主要在FAQ页面,问题也出现在多次进入退出时,发现内存占用大,GC频繁.使用LeakCanary观察发现有两个内存泄漏很频繁: 我们分析一下这两个泄漏: 从图一我们可以发现是WebView的ContentViewCo

  • 基于Android引入IjkPlayer无法播放mkv格式视频的解决方法

    写在前面 项目中直接引用或者直接编译源码得到的ijkplayer在播放mkv文件时出现(-10000)的错误,去项目github查看了才知道,默认是不支持mkv和rmvb格式视频的播放的. 用了一天时间解决(为什么用了一天,因为我蠢啊),这里记录一下解决的方法(官方上面其实已经有了详细的教程,无奈我当时没有很认真看.)这里为我自己这个新手做个记录: 仍然是采用编译源码的方式引入,只是需要按照官方的方法更改一下脚本文件 ijkplayer官方地址:https://github.com/Bilibi

  • Android编程出现Button点击事件无效的解决方法示例

    本文实例讲述了Android编程出现Button点击事件无效的解决方法.分享给大家供大家参考,具体如下: 遇到这样一个问题,给一个界面上方的按钮添加了点击事件,但死活没反应,而放在界面下方的3个按钮,都有相应点击事件,百度了一下无非有两种可能: 1.button没有初始化或者button初始化多次,导致混乱. 2.button点击事件写错,无法监听. 但我确定的是这些都是没有错的,后来找到的原因是下方的scroll布局覆盖了上方的button的布局,使用了fill_parent,所以获取不到点击

  • Android TabHost选项卡标签图标始终不出现的解决方法

    本文实例分析了Android TabHost选项卡标签图标始终不出现的解决方法.分享给大家供大家参考,具体如下: 在学习Android TabHost布局过程中,很多教程告诉我,这样来显示选项卡标签的图标和文字: TapSpec spec1 = tabHost.newTabSpec("tab 1"); spec1.setIndicator("选项卡一", getResources().getDrawable(R.drawable.tab_icon)); spec1.

  • spring boot 本地图片不能加载(图片路径)的问题及解决方法

    在使用html加载图片时,发现本地图片在页面上不能显示,但是直接引用网络上的资源是可以显示的.参考了众多前人的经验,得出一下结论: 本地图片不能显示最主要的问题是,图片在本地url和图片在服务器上被加载是的URL是不一样的.也就是路径的问题. 解决的办法其实很简单,只要写一个配置文件,也就是图片位置的转化器,原理是虚拟一个在服务器上的文件夹,与本地图片的位置进行匹配. 在调用本地图片时,就相当于调用服务器上的图片. 关键的代码如下: @Configuration public class MyW

  • 关于android连续点击出现多个Activity界面的解决方法

    前言 开始始学习android,对android的启动模式没有什么了解,就使用了时间判断是否重复点击了两次按钮,启动另外的activity界面,这样的控制方法,有时候会失效,比如,两秒钟还未启动另外的activity,那么又可以重复点击.所以,就调整为android的启动模式来控制重复出现多个acitvity. 一.通过时间控制点击次数: 这种方式对应控制网络请求不错. public class NoDoubleClickUtil { private static long lastClickT

随机推荐