笔记。
真的是什么都不知道的状态下,java就学了的最最基本的内容,安卓学的马马虎虎,只能网上找找源码。这个方法可能不是最优的,但是是现在我能弄出来的。。。
在csdn用了超多积分才找到的源码,只有安卓端的内容,并没有服务端。把两端合起来。做个笔记。这个可能还有一个bug,就是图像不会马上就在android显示出来,必须要刷新后才能显示出来。
安卓端的代码。
ByteArrayOutputStream out = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);// 如果不压缩是100,表示压缩率为0,写30 是压缩率,表示压缩70%;
out.flush();
out.close();
Random r = new Random();
int rannum = (int) (r.nextDouble() * (99999 - 10000 + 1)) + 10000; // 获取随机数
byte[] buffer = out.toByteArray();
byte[] encode = Base64.encode(buffer, Base64.DEFAULT);
String photo = new String(encode);
ImageName = getStringToday() +rannum+ ".jpg";//根据现在时间和随机数将名字保存下来。
RequestParams params = new RequestParams();
params.put("photo", photo);
params.put("ImageName", ImageName);//图片名称
params.put("doc_img_id", ids);
//Toast.makeText(getApplicationContext(), ids, Toast.LENGTH_SHORT).show();
params.put("typename","xuesheng" );
String url = "上传的地址";
AsyncHttpClient client = new AsyncHttpClient();
client.post(url, params, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int arg0, String arg1) {
// TODO Auto-generated method stub
super.onSuccess(arg0, arg1);
try {
if (arg0 == 200) {
Toast.makeText(Person_detail_control.this, "头像上传成功!", 0)
.show();
//Toast.makeText(MainActivity.this, , 0).show();
} else {
Toast.makeText(Person_detail_control.this,
"网络访问异常,错误码:" + arg0, 0).show();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void onFailure(Throwable arg0, String arg1) {
// TODO Auto-generated method stub
super.onFailure(arg0, arg1);
Toast.makeText(Person_detail_control.this,
"网络访问异常,错误码 > " + arg0, 0).show();
}
});
服务器端接收图片的代码
@Override
public String execute() throws Exception {
String phone=request.getParameter("photo");
String ImageName=request.getParameter("ImageName");
GenerateImage(phone,ImageName);
System.out.println(phone);
return NONE;
}
public static boolean GenerateImage(String imgStr,String ImageName) { // 对字节数组字符串进行Base64解码并生成图片
if (imgStr == null) // 图像数据为空
return false;
BASE64Decoder decoder = new BASE64Decoder();
try {
// Base64解码
byte[] b = decoder.decodeBuffer(imgStr);
for (int i = 0; i < b.length; ++i) {
if (b[i] < 0) {// 调整异常数据
b[i] += 256;
}
}
// 生成jpeg图片
String imgFilePath = "E:\\Program Files\\Workspacessss\\HealthMotherWeb\\WebRoot\\image\\"+ImageName+".jpg";
OutputStream out = new FileOutputStream(imgFilePath);
out.write(b);
out.flush();
out.close();
return true;
} catch (Exception e) {
return false;
}
}