博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android网络图片转换成File文件
阅读量:7102 次
发布时间:2019-06-28

本文共 2622 字,大约阅读时间需要 8 分钟。

hot3.png

项目中需求是这样子的,接口获取一些个人信息列表,列表中包含中多张图片,点击修改要把查询出来的图片和后期添加的图片一道上传到服务器。

思路:网络图片路径---->下载到本地(bitmap)-->转换为本地File文件

1.下载本地

/** * 网络图片uri转bitmap * Created by iningke on 2017/2/8. */public class ToImg3 {    public final static Bitmap returnBitMap(String url) {        URL myFileUrl = null;        Bitmap bitmap = null;        try {            myFileUrl = new URL(url);            HttpURLConnection conn;            conn = (HttpURLConnection) myFileUrl.openConnection();            conn.setDoInput(true);            int length = conn.getContentLength();            conn.connect();            InputStream is = conn.getInputStream();            BufferedInputStream bis = new BufferedInputStream(is, length);            BitmapFactory.Options options = new BitmapFactory.Options();            options.inSampleSize =2;    // 设置缩放比例            Rect rect = new Rect(0, 0,0,0);            bitmap = BitmapFactory.decodeStream(bis,rect,options);        } catch (IOException e) {            e.printStackTrace();        }        return bitmap;    }}

2.转换文件

public class ToImg4 {    /**     * 将Bitmap转换成文件     * 保存文件     * @param bm     * @param fileName     * @throws IOException     */    public static File saveFile(Bitmap bm, String fileName) throws IOException {        String path = getSDPath() +"/wuliu/";        File dirFile = new File(path);        if(!dirFile.exists()){            dirFile.mkdir();        }        File myCaptureFile = new File(path + fileName);        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(myCaptureFile));        bm.compress(Bitmap.CompressFormat.JPEG, 80, bos);        bos.flush();        bos.close();        return myCaptureFile;    }    //获取sd卡路径    public static String getSDPath(){        File sdDir = null;        boolean sdCardExist = Environment.getExternalStorageState()                .equals(Environment.MEDIA_MOUNTED);//判断sd卡是否存在        if(sdCardExist)        {            sdDir = Environment.getExternalStorageDirectory();//获取跟目录        }        return sdDir.toString();    }}

调用方法

thread = new Thread(new Runnable() {            @Override            public void run() {                try {                    Bitmap bitmap = ToImg3.returnBitMap(path);                    String imageName = System.currentTimeMillis()+".png";                    File file = ToImg4.saveFile(bitmap, imageName);                                 Log.e("download",file+"");                } catch (IOException e) {                    e.printStackTrace();                }            }        });        thread.start();

大概这样子,耗内存不会太大,在40-60之间

172749_sOK3_2008084.png

 

转载于:https://my.oschina.net/u/2008084/blog/840288

你可能感兴趣的文章
以太坊系列之十三: evm指令集
查看>>
9、MySQL函数
查看>>
powerdesigner使用sql文件生成uml图
查看>>
Scala的类层级讲解
查看>>
微信api 源码分享
查看>>
泰坦尼克乘客存活状况(决策树案例)
查看>>
博客计划【推荐系统】
查看>>
iptables杂记
查看>>
JPress v2.0-rc.8 发布,新增插件开发的代码生成器
查看>>
RHEL和Debian上生成随机密码-mkpasswd
查看>>
图片转字符图片(三)
查看>>
常用正则表达式 -- 费元星 java大神
查看>>
TinyMCE 5 正式版发布,重磅更新!!!
查看>>
干货集中营mvp架构开源项目
查看>>
Docker自定义Tomcat,实现远程部署项目和管理
查看>>
《Kotlin 极简教程 》第6章 泛型
查看>>
《Spring Boot极简教程》附录2 编程的本质
查看>>
Stream 分布式数据流的轻量级异步快照
查看>>
人工智能将对就业结构产生重大影响
查看>>
mysql解决乱码问题
查看>>