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 】
相关推荐:
如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环
JavaScript如何操作视频_媒体API怎么控制播放
网站制作企业,网站的banner和导航栏是指什么?
如何确认建站备案号应放置的具体位置?
Python函数文档自动校验_规范解析【教程】
微信小程序制作网站有哪些,微信小程序需要做网站吗?
JavaScript如何实现类型判断_typeof和instanceof有什么区别
微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】
iOS正则表达式验证手机号、邮箱、身份证号等
Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件
Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程
南京网站制作费用,南京远驱官方网站?
制作公司内部网站有哪些,内网如何建网站?
如何在云主机快速搭建网站站点?
如何用PHP工具快速搭建高效网站?
香港服务器选型指南:免备案配置与高效建站方案解析
矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?
WEB开发之注册页面验证码倒计时代码的实现
javascript中的try catch异常捕获机制用法分析
EditPlus中的正则表达式 实战(4)
如何使用 jQuery 正确渲染 Instagram 风格的标签列表
Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
浅述节点的创建及常见功能的实现
如何在IIS服务器上快速部署高效网站?
Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】
Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程
百度浏览器如何管理插件 百度浏览器插件管理方法
Python正则表达式进阶教程_复杂匹配与分组替换解析
Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用
深入理解Android中的xmlns:tools属性
音响网站制作视频教程,隆霸音响官方网站?
HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】
用yum安装MySQLdb模块的步骤方法
如何确保FTP站点访问权限与数据传输安全?
Python自然语言搜索引擎项目教程_倒排索引查询优化案例
Swift中循环语句中的转移语句 break 和 continue
edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】
Linux系统命令中tree命令详解
Laravel怎么在Controller之外的地方验证数据
EditPlus 正则表达式 实战(3)
Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】
Android滚轮选择时间控件使用详解
php485函数参数是什么意思_php485各参数详细说明【介绍】
如何用狗爹虚拟主机快速搭建网站?
香港服务器网站推广:SEO优化与外贸独立站搭建策略
微信小程序 五星评分(包括半颗星评分)实例代码
linux写shell需要注意的问题(必看)
linux top下的 minerd 木马清除方法
如何在宝塔面板中修改默认建站目录?

