我上一篇文章写了《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小时内与您取得联系。