Android 获取drawable目录图片 并存入指定文件的步骤详解
作者:路过火车 发布时间:2021-11-01 07:04:48
标签:android,目录图片,存入,文件
第一步:获取存储的路径 我们用/sdcard/Android/data/
包名/的路径 方便我们测试查看
String path=MyApplication.getContextObject().getExternalFilesDir("").toString();
File file=new File(path);
第二步:根据该文件中存储的路径信息在文件系统上创建一个新的空文件
File finalImageFile = new File(file, System.currentTimeMillis() + ".jpg");
try {
finalImageFile.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
第三步:将字节放入文件输出流
FileOutputStream fos = null;
try {
fos = new FileOutputStream(finalImageFile);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
第四步:将图片压缩成图片格式
BitmapDrawable bitmapDrawable = (BitmapDrawable)MyApplication.getContextObject().getResources().getDrawable(R.drawable.account);
Bitmap bitmap=bitmapDrawable.getBitmap();
if (bitmap == null) {
Toast.makeText(MyApplication.getContextObject(), "图片不存在",Toast.LENGTH_LONG).show();
return;
}
bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
try {
fos.flush();
fos.close();
Toast.makeText(MyApplication.getContextObject(), "图片保存在:"+ finalImageFile.getAbsolutePath(), Toast.LENGTH_LONG).show();
} catch (IOException e) {
e.printStackTrace();
}
完整代码
String path=MyApplication.getContextObject().getExternalFilesDir("").toString();
File file=new File(path);
File finalImageFile = new File(file, System.currentTimeMillis() + ".jpg");
try {
finalImageFile.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
FileOutputStream fos = null;
try {
fos = new FileOutputStream(finalImageFile);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
BitmapDrawable bitmapDrawable = (BitmapDrawable)MyApplication.getContextObject().getResources().getDrawable(R.drawable.account);
Bitmap bitmap=bitmapDrawable.getBitmap();
if (bitmap == null) {
Toast.makeText(MyApplication.getContextObject(), "图片不存在",Toast.LENGTH_LONG).show();
return;
}
bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
try {
fos.flush();
fos.close();
Toast.makeText(MyApplication.getContextObject(), "图片保存在:"+ finalImageFile.getAbsolutePath(), Toast.LENGTH_LONG).show();
} catch (IOException e) {
e.printStackTrace();
}
来源:https://blog.csdn.net/weixin_42362496/article/details/105157631


猜你喜欢
- spring在启动时会自己把bean(java组件)注册到ioc容器里,实现控制反转,在开发人员使用spring开发应用程序时,你是看不到n
- 为什么要优雅的处理异常如果我们不统一的处理异常,经常会在controller层有大量的异常处理的代码, 比如:@Slf4j@Api(valu
- 开发一款性能优良的应用是每一个Android开发者都必须经历的挑战。在移动端资源有限的前提下,提高应用的性能显得尤为重要。常见的提高APP性
- 北京时间 2018 年 3 月 1 日早上,如约发布的 Spring Boot 2.0 在同步至 Maven 仓库时出现问题,导致在 Git
- 动态方法就是一个Action对应多个请求,减少Action的数量1、指定method属性<action name="addA
- 前言本文主要是将最近工作中遇到的一个问题进行总结分享,主要介绍的是如何让WebView中H5页面全屏播放视频。关于这个问题,做一下简单分析,
- 前言:本文介绍Java中数组转为List三种情况的优劣对比,以及应用场景的对比,以及程序员常犯的类型转换错误原因解析。一.最常见方式(未必最
- public static string DateDiff(DateTime DateTime1, DateTime DateT
- 简介一般情况下我们在flutter中搭建的app基本上都是用的是MaterialApp这种设计模式,MaterialApp中为我们接下来使用
- 一、结论先行ArrayList在JDK1.8与JDK1.7底层区别JDK1.7:ArrayList像饿汉式,直接创建一个初始容量为10的数组
- 场景:在学习JDBC的语言中,每次都执行通用的几步:即注册驱动,获取连接,创建操作,处理结果,释放资源 过于复杂,因此不妨将上述步骤封装成工
- 本文实例讲述了C#预处理器指令的用法。分享给大家供大家参考。具体用法分析如下:C#预处理器指令是在编译时调用的。预处理器指令(preproc
- 最近我尝试使用ViewPager+GridView实现的,看起来一切正常,废话不多说,具体代码如下:如图是效果图 首先分析下思路1
- 两个小解释:FileProvider是ContentProvider特殊的子类,ContentProvider通过创建content://
- C#实现修改文件的创建、修改和访问时间方法,主要是用到了File类的SetCreationTime、SetLastWriteTime、Set
- C#中+=是什么意思在C#中, "+="有两种运用场合。第一种,用在数值后面作为逻辑运算符,自加变量,如:int i=0
- 在C#程序开发过程中,很多时候可能需要将字符串根据特定的分割字符分割成字符或者List集合,例如根据逗号将字符串分割为数组,或者根据竖线将字
- 本文实例分析了c#对象初始化顺序。分享给大家供大家参考。具体如下:using System;using System.Collections
- 本文实例讲述了Android编程动态按钮实现方法。分享给大家供大家参考,具体如下:第一种: 该方法通过onTouch来实现,btn3 = (
- 本文实例讲述了C#通过DataSet读写xml文件的方法。分享给大家供大家参考。具体实现方法如下:DataSet ds = new Data