文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android应用中怎么将svg图片转换为jpg格式

2023-05-31 03:27

关注

这篇文章给大家介绍Android应用中怎么将svg图片转换为jpg格式,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

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(); }}

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 资料下载
  • 历年真题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯