1.图片转Base64字符串;a、Android转Base64字符串:1)将本地文件转为Base64字符串;publicstaticStringfileToBase64(Stringpath){if(TextUtils.isEmpty(path)){返回空;}FileInputStreamfis=null;int字节大小=0;try{fis=newFileInputStream(路径);byteSize=fis.available();}catch(IOExceptione){e.printStackTrace();}intsize=byteSize/MB;位图位图=BitmapFactory.decodeStream(fis);if(size>5){//当图片大于5兆时,进行尺寸压缩(做一个压缩过程,转换Base64字符串会更快)bitmap=getScaleBitmap(bitmap);}字符串bitmapStr="";如果(位图!=null){try{ByteArrayOutputStreamoutputStream=newByteArrayOutputStream();if(size>5){//当图片大于5兆时,进行质量压缩intmultiple=size/5;bitmap.compress(Bitmap.CompressFormat.JPEG,100/multiple,outputStream);}else{bitmap.compress(Bitmap.CompressFormat.JPEG,100,outputStream);}bitmapStr=Base64.getEncoder().encodeToString(outputStream.toByteArray());}catch(RuntimeExceptione){e.printStackTrace();}}returnbitmapStr;}2)对位图做尺寸压缩publicstaticBitmapgetScaleBitmap(Bitmapbitmap){if(bitmap==null){returnnull;}//将大于1080px的图片转换为1080px尺寸,可根据业务修改finalintminSize=1080;intbitmapWidth=bitmap.getWidth();intbitmapHeight=bitmap.getHeight();int比例宽度;int比例高度;inttempSize=Math.min(bitmapWidth,bitmapHeight);floatscaleFactor=(float)minSize/(float)tempSize;//确定最大长度或宽度if(tempSize==bitmapWidth){if(tempSize>minSize){scaleWidth=minSize;scaleHeight=(int)(bitmapHeight*scaleFactor);}else{返回位图;}}else{if(tempSize>minSize){scaleHeight=minSize;scaleWidth=(int)(bitmapWidth*scaleFactor);}else{返回位图;}}位图scaleBitmap=Bitmap.createScaledBitmap(bitmap,scaleWidth,scaleHeight,true);返回比例位图;}压缩图片的目的是提高Base64字符串的转换速度,但如果对图片的像素有要求,则不会做压缩处理;H5不能直接使用转换后的Base64字符;H5加载Base64图片格式为:
