java传输本地图片到Android
【java传输本地图片到Android】实现将本地存储的图片发送到后台
使用springMVC框架,获取本地图片,转换成流输出
@RequestMapping(value="https://www.it610.com/article/showImageDiaLog.do",params={"action=showImageDiaLog"})
public void showImageByType(String filename,HttpServletRequest request,HttpServletResponse response) throws IOException{
InputStream inputStream = null;
OutputStream writer = null;
filename = new String(filename.getBytes("ISO-8859-1"),"UTF-8");
try {
inputStream = new FileInputStream(new File(Constants.getApplicationValue("C\:\\\myeclipseWork\\image\\")+filename));
writer = response.getOutputStream();
byte[] buf = new byte[1024];
int len = 0;
while ((len = inputStream.read(buf)) != -1) {
writer.write(buf, 0, len);
//写
}
} catch (Exception e) {
logger.error(e.toString());
} finally{
if(inputStream != null){
inputStream.close();
}
if(writer != null){
writer.close();
}
}
}
Android代码 请求地址,出入请求的文件名
private String url = "http://192.168.1.132:8080/eSAM/showImageDiaLog.do?action=showImageDiaLog&filename=1.jpg";
使用glide框架获取图片展示
Glide.with(MainActivity.this)
.load(url)
.into(imageView);
保存在本地,工具类
package com.example.image;
import android.content.Context;
import android.os.Environment;
import android.util.Log;
import android.widget.Toast;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.animation.GlideAnimation;
import com.bumptech.glide.request.target.SimpleTarget;
import java.io.File;
import java.io.FileOutputStream;
/**
* Created by user on 20/9/2017.
*/public class SDFileHelper {
private Context context;
public SDFileHelper() {
}public SDFileHelper(Context context) {
super();
this.context = context;
}//Glide保存图片
public void savePicture(final String fileName, String url){
Glide.with(context).load(url).asBitmap().toBytes().into(new SimpleTarget() {
@Override
public void onResourceReady(byte[] bytes, GlideAnimation super byte[]> glideAnimation) {
try {
savaFileToSD(fileName,bytes);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
//往SD卡写入文件的方法
public void savaFileToSD(String filename, byte[] bytes) throws Exception {
//如果手机已插入sd卡,且app具有读写sd卡的权限
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
String filePath = Environment.getExternalStorageDirectory().getCanonicalPath()+"/budejie";
File dir1 = new File(filePath);
if (!dir1.exists()){
dir1.mkdirs();
}
filename = filePath+ "/" + filename;
//这里就不要用openFileOutput了,那个是往手机内存中写数据的
FileOutputStream output = new FileOutputStream(filename);
output.write(bytes);
//将bytes写入到输出流中
output.close();
//关闭输出流
Toast.makeText(context, "图片已成功保存到"+filePath, Toast.LENGTH_SHORT).show();
Log.e("filePath:",filePath);
} else {
Toast.makeText(context, "SD卡不存在或者不可读写", Toast.LENGTH_SHORT).show();
}
}
}
保存在sd卡
//保存图片在本地
SDFileHelper helper = new SDFileHelper(MainActivity.this);
helper.savePicture("b.jpg",url);
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 事件代理
- Java|Java OpenCV图像处理之SIFT角点检测详解
- java中如何实现重建二叉树
- 数组常用方法一
- 【Hadoop踩雷】Mac下安装Hadoop3以及Java版本问题
- Java|Java基础——数组
- RxJava|RxJava 在Android项目中的使用(一)
- java之static、static|java之static、static final、final的区别与应用
- Java基础-高级特性-枚举实现状态机