接上一篇
Android识别手写笔迹并透明化处理
由于我们的服务端接口是通过base64接收处理后的图片,因此需要将图片处理成Base64字符串(忽略将图片从文件转化为Bitmap的过程)
* bitmap转为base64
* @param bitmap
* @return
public
static
String
bitmapToBase64
(
Bitmap bitmap
)
{
String result
=
null
;
ByteArrayOutputStream baos
=
null
;
try
{
if
(
bitmap
!=
null
)
{
baos
=
new
ByteArrayOutputStream
(
)
;
bitmap
.
compress
(
Bitmap
.
CompressFormat
.
PNG
,
100
,
baos
)
;
baos
.
flush
(
)
;
baos
.
close
(
)
;
byte
[
]
bitmapBytes
=
baos
.
toByteArray
(
)
;
result
=
Base64
.
encodeToString
(
bitmapBytes
,
Base64
.
DEFAULT
)
;
}
catch
(
IOException
e
)
{
e
.
printStackTrace
(
)
;
}
finally
{
try
{
if
(
baos
!=
null
)
{
baos
.
flush
(
)
;
baos
.
close
(
)
;
}
catch
(
IOException
e
)
{
e
.
printStackTrace
(
)
;
return
result
;
base64的字符串中每76个字符后面会被添加上一个
\n
符号
我们采用的是
Base64.DEFAULT
的flags进行转码,会造成字符串中有很多
\n
分隔符,原因是由于RFC2045规范每行字符串不能超过76个字符,因此Base64在编码的时候会添加
\n
分隔符,此规范链接
RFC2045规范
此问题会导致我们给服务端提交base64的时候,该图片在web上无法通过
src='data:image/jpeg;base64,...'
正常展示图片
将flags设置为
Base64.NO_WRAP
,在Android的文档中有说明,设置为这个flag,则返回的字符串将会一个长串(也就是不会换行),这正是我们期望的结果
// NO_WRAP
// Encoder flag bit to omit all line terminators (i.e., the output will be on one long line).
result = Base64.encodeToString(bitmapBytes, Base64.NO_WRAP);
接上一篇 Android识别手写笔迹并透明化处理由于我们的服务端接口是通过base64接收处理后的图片,因此需要将图片处理成Base64字符串(忽略将图片从文件转化为Bitmap的过程)/** * bitmap转为base64 * @param bitmap * @return */ public static String bitmapToBase64(Bitmap bitmap) { String result = null;
公司要求
图片上传
转换
base64位并
转换为
字符串,多张
图片用逗号隔开,无奈只能自己二次封装element的上传组件
主要修改这几个方面
1.
转换多张
图片为
base64,
2.去除el-upload动画,
3.支持传递最多可上传数量达到数量隐藏上传按钮
这是二次封装组件的子组件代码
pic为处理好后传递给父组件的
base64代码
limit为接受父组件传递进来的
图片最多上传张数,达到最多数量隐藏上传按钮,传递0或者不传递这个参数为无限制
<template>
再下限于水平有限,多次尝试后端返回图片到前端,没有找到一种最好的方法。
1.可以用本地工程存放图片。每次返回图片在本地工程的路径就可以。
有点:简单易用,可以返回多张图片。
缺点:本地工程越来越臃肿。
2.用mongoDB存放,每次通过图片流返回前端。(这里的convertGridFSFile2Resource是针对springboot2.x以上版本,前面的博客有专门讲)
@RequestMapp...
Base64OutputStream类的源码
public class Base64OutputStream extends BaseNCodecOutputStream {
public Base64OutputStream(OutputStream out) {
this(out, true);
public Base64OutputStream(O...
一.问题由来问题如题,这种情况在使用android 和 eclipse中都碰到.1. 环境介绍android 中使用 import android.util.Base64.*;eclipse 中使用
import sun.misc.BASE64Encoder;
import sun.misc.BASE64Decoder;2. 问题详情使用Base64编码图片为字符串,发送给服务器,服务器收到的
需求是将图片转换为Base64编码,再存入json中,转发给相应接口,但接口返回的结果都为错误,仔细排查后发现图片转换为Base64编码末尾自动添加了换行符的问题,以及有些空格出现。
先前使用的转换方法:
BASE64Encoder encoder = new BASE64Encoder();
encoder.encode(image);
将其改为:
Base64.getEncoder().encodeToString(image)
这里需要注意的是导入的包为 java.util.Base64。