请教各位朋友,我的android客户端通过将图片转换成string,上传服务器后不能正常打开图片,
上传的图片下载下来通过文本框能够显示转换过后的string
服务器显示如下
下面是我的img转换String代码
public static String getImageString(String imgFilePath){
String imageString = null;
Bitmap mBitmap=BitmapFactory.decodeFile(imgFilePath);
if(mBitmap!=null){
Matrix matrix = new Matrix();
int mWidth=mBitmap.getWidth();
int mHeight=mBitmap.getHeight();
float scaleWidth=(float)150/mWidth;
float scaleHeight=(float)150/mHeight;
Log.i("scale", scaleWidth+"++++++++++++"+scaleHeight);
matrix.postScale(scaleWidth, scaleHeight);
Bitmap newBitmap=Bitmap.createBitmap(mBitmap, 0, 0, mBitmap.getWidth(), mBitmap.getHeight(), matrix, true);
ByteArrayOutputStream out=new ByteArrayOutputStream();
newBitmap.compress(CompressFormat.JPEG, 100, out);
byte []bytes=out.toByteArray();
imageString=Base64.encodeToString(bytes, Base64.DEFAULT);
System.out.println(imageString);
}
return imageString;
}
注意64编码 有点印象 是把空格换成加号?否则会有残
那得看你后台怎么处理的啊,前端你将字节流通过BASE64加密,那么后台获得到的字符串应该通过BASE64解密,后重新输出文件流,创建文件吧。话说为什么要这么复杂呢,直接文件流传输不就行了。网页无法显示你的BASE64加密的字符串。图片的base64是需要带头部数据,否则没法用比如data:image/png;
base64, iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAYAAABIdFAMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHhJREFUeNo8zjsOxCAMBFB/ KEAUFFR0Cbng3nQPw68ArZdAlOZppPFIBhH5EAB8b+Tlt9MYQ6i1BuqFaq1CKSVcxZ2Acs6406KUgpt5/ LCKuVgz5BDCSb13ZO99ZOdcZGvt4mJjzMVKqcha68iIePB86GAiOv8CDADlIUQBs7MD3wAAAABJRU5ErkJggg%3D%3D。
你的字符串应该只是后面base64的字符串而已,所以无法显示出来。具体还得看你们前后台怎么约定的。