android 把file资源转file,Android网络图片转换成File文件

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

思路:网络图片路径---->下载到本地(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之间

f3ec0c8d7fcdbcd163832b5581e6cfa9.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值