Android把svg图片转为jpg保存到相册图库
发布时间 - 2026-01-11 01:13:52 点击率:次我上一篇文章写了《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
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何快速生成ASP一键建站模板并优化安全性?
Python面向对象测试方法_mock解析【教程】
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
Laravel怎么在Blade中安全地输出原始HTML内容
Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析
nginx修改上传文件大小限制的方法
Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用
如何在腾讯云免费申请建站?
html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】
Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
如何快速搭建高效简练网站?
高端网站建设与定制开发一站式解决方案 中企动力
如何在腾讯云服务器上快速搭建个人网站?
Laravel怎么清理缓存_Laravel optimize clear命令详解
java获取注册ip实例
如何实现javascript表单验证_正则表达式有哪些实用技巧
北京网站制作的公司有哪些,北京白云观官方网站?
浅谈Javascript中的Label语句
原生JS实现图片轮播切换效果
HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】
软银砸40亿美元收购DigitalBridge 强化AI资料中心布局
Laravel如何使用Blade模板引擎?(完整语法和示例)
装修招标网站设计制作流程,装修招标流程?
Python图片处理进阶教程_Pillow滤镜与图像增强
历史网站制作软件,华为如何找回被删除的网站?
如何在IIS中新建站点并配置端口与IP地址?
如何用PHP工具快速搭建高效网站?
Laravel如何创建自定义中间件?(Middleware代码示例)
矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?
javascript如何操作浏览器历史记录_怎样实现无刷新导航
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
Laravel如何使用.env文件管理环境变量?(最佳实践)
如何快速搭建高效香港服务器网站?
今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】
HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】
Python正则表达式进阶教程_复杂匹配与分组替换解析
使用spring连接及操作mongodb3.0实例
Python自然语言搜索引擎项目教程_倒排索引查询优化案例
Laravel如何为API生成Swagger或OpenAPI文档
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
微信小程序 配置文件详细介绍
Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势
iOS中将个别页面强制横屏其他页面竖屏
实现点击下箭头变上箭头来回切换的两种方法【推荐】
Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程
Laravel怎么自定义错误页面_Laravel修改404和500页面模板
Laravel如何配置任务调度?(Cron Job示例)
如何快速搭建安全的FTP站点?
PythonWeb开发入门教程_Flask快速构建Web应用

