全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

我上一篇文章写了《Android加载html中的svg格式图片进行显示〉,有兴趣的同学可以去看看地址:Android加载html中svg格式图片进行显示

但是我们一般在浏览图片时,还会有保存图片到相册或图库的操作,而Android手机自带的相册或图库是不支持查看svg格式的图片的,所以我们需要把svg格式的图片转为jpg或png格式再进行保存,我的例子是保存为jpg格式,png也是一样的,我这里写了个工具类,可以保存jpg,png格式的图片,也可以把svg图片转为jpg进行保存.接下来我贴下我的代码:

public class FileUtils {
 public static void savePhoto(final Context context, final String url , final SaveResultCallback saveResultCallback) {
 new Thread(new Runnable() {


  @Override
  public void run() {
  File appDir = new File(Environment.getExternalStorageDirectory(), "out_photo");
  if (!appDir.exists()) {
   appDir.mkdir();
  }
  SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");//设置以当前时间格式为图片名称
  String fileName = df.format(new Date()) + ".jpg";
  File file = new File(appDir, fileName);
  if (url.endsWith(".svg")){
   //拿到图片在assets目录下的相对路径
   String replaceUrl = url.replace("file:///android_asset/", "");
   try {
   SVG svg = new SVGBuilder().readFromAsset(context.getAssets(), replaceUrl).build();
   //拿到svg图片的drawable
   PictureDrawable drawable = svg.getDrawable();
   //图片背景的画笔
   Paint paint = new Paint();
   paint.setColor(Color.WHITE);
   //图片线条的画笔
   Paint paint1 = new Paint();
   paint1.setColor(Color.BLACK);
   //创建bitmap对象
   Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
   Canvas canvas = new Canvas(bitmap);
   canvas.drawRect(0,0,bitmap.getWidth()+50,bitmap.getHeight()+50,paint);
   drawable.setBounds(0,0,canvas.getWidth(),canvas.getHeight());
   drawable.draw(canvas);
   FileOutputStream fos = new FileOutputStream(file);
   //转为jpg格式并写入到sd卡
   bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
   fos.flush();
   fos.close();
   saveResultCallback.onSavedSuccess();
   } catch (IOException e) {
   e.printStackTrace();
   saveResultCallback.onSavedFailed();
   }
  }else {
  try {
   //保存jpg格式的图片到相册中
   FileOutputStream fos = new FileOutputStream(file);
   InputStream fis = context.getAssets().open(url.replace("file:///android_asset/",""));
   int len = 0;
   byte[] bytes = new byte[1024];
   while ((len = fis.read(bytes)) != -1){
   fos.write(bytes,0,len);
   }
   fos.flush();
   fis.close();
   fos.close();
   saveResultCallback.onSavedSuccess();
  } catch (FileNotFoundException e) {
   saveResultCallback.onSavedFailed();
   e.printStackTrace();
  } catch (IOException e) {
   saveResultCallback.onSavedFailed();
   e.printStackTrace();
  }
  }

  //保存图片后发送广播通知更新数据库
  Uri uri = Uri.fromFile(file);
  context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, uri));
  }
 }).start();
 }

 public interface SaveResultCallback{
 void onSavedSuccess();
 void onSavedFailed();
 }

}

用到的第三方开源库:https://github.com/japgolly/svg-android

效果图:

欢迎大家进行交流,指正!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# Android图片转为jpg保存到相册图库  # Android图片保存到相册图库  # Android  # svg图片转为jpg  # 基于Android实现保存图片到本地并可以在相册中显示出来  # android创建数据库(SQLite)保存图片示例  # Android实现保存图片到本地并在相册中显示  # Android画图并保存图片的具体实现代码  # Android实现点击WebView界面中图片滑动浏览与保存图片功能  # Android WebView实现长按保存图片及长按识别二维码功能  # Android编程实现保存图片到系统图库的方法示例  # Android实现长按图片保存至相册功能  # Android开发实现保存图片到手机相册功能  # 写了  # 加载  # 会有  # 有兴趣  # 欢迎大家  # 不支持  # 自带  # 我上  # 一篇文章  # 大家多多  # 进行交流  # 保存为  # 格式为  # 目录下  # 是一样的  # Override  # SimpleDateFormat  # mkdir  # yyyyMMddHHmmss  # df 


相关文章: 大连网站设计制作招聘信息,大连投诉网站有哪些?  Python多线程使用规范_线程安全解析【教程】  制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?  建站之星如何优化SEO以实现高效排名?  如何通过wdcp面板快速创建网站?  青岛网站建设如何选择本地服务器?  如何在IIS中配置站点IP、端口及主机头?  湖州网站制作公司有哪些,浙江中蓝新能源公司官网?  ,南京靠谱的征婚网站?  贸易公司网站制作流程,出口贸易网站设计怎么做?  西安专业网站制作公司有哪些,陕西省建行官方网站?  C++时间戳转换成日期时间的步骤和示例代码  广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?  宝塔面板创建网站无法访问?如何快速排查修复?  如何在Windows服务器上快速搭建网站?  教学网站制作软件,学习*后期制作的网站有哪些?  个人网站制作流程图片大全,个人网站如何注销?  Thinkphp 中 distinct 的用法解析  定制建站流程解析:需求评估与SEO优化功能开发指南  XML的“混合内容”是什么 怎么用DTD或XSD定义  建站之星手机一键生成:多端自适应+小程序开发快速建站指南  网站制作说明怎么写,简述网页设计的流程并说明原因?  建站上传速度慢?如何优化加速网站加载效率?  已有域名如何快速搭建专属网站?  我的世界制作壁纸网站下载,手机怎么换我的世界壁纸?  如何在万网自助建站平台快速创建网站?  上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?  c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】  开源网站制作软件,开源网站什么意思?  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  在线制作视频网站免费,都有哪些好的动漫网站?  如何在服务器上三步完成建站并提升流量?  网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?  详解jQuery停止动画——stop()方法的使用  网站制作公司广州有几家,广州尚艺美发学校网站是多少?  小型网站制作HTML,*游戏网站怎么搭建?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  北京网站制作网页,网站升级改版需要多久?  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  实例解析Array和String方法  css网站制作参考文献有哪些,易聊怎么注册?  长沙做网站要多少钱,长沙国安网络怎么样?  长春网站建设制作公司,长春的网络公司怎么样主要是能做网站的?  如何选择高效响应式自助建站源码系统?  深圳网站制作平台,深圳市做网站好的公司有哪些?  建站之星logo尺寸如何设置最合适?  免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?  手机网站制作与建设方案,手机网站如何建设?  表情包在线制作网站免费,表情包怎么弄?  成都网站制作公司哪家好,四川省职工服务网是做什么用? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。