工程需求,我后台生成一个图片传输,用字节数组传输给前台,前台展示,因为字节数组过大,导致报文过长,我便把字节数组压缩后传输到前台,这种情况下,我前台如何利用js在前台展示出这张图片?
gzip, deflate压缩的浏览器会自动解压的,不需要js干预,如果使用了浏览器不支持其他压缩算法就得自己谷歌你使用到的算法了
你数据库中的图片拿出来的是byte[]型的吗,如果是得先对图片进行64位编码再发送到前台。
前台对图片展示设置图片的大小即可
给你试了一下,
public static void main(String[] args) {
// 先做一个图形byte[]
byte[] img = null;
try {
img = image2Bytes("D:\2.png");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
BASE64Encoder encoder = new BASE64Encoder(); // 实例化一个对byte[]型数据进行64位编码的对象
String blob = encoder.encode(img);
String returnInfo = "data:image/jpeg;base64," + blob; // 前台直接把returnInfo放入img标签的src中
System.out.println(returnInfo);
}
static byte[] image2Bytes(String imgSrc) throws Exception {
FileInputStream fin = new FileInputStream(new File(imgSrc));
// 可能溢出,简单起见就不考虑太多,如果太大就要另外想办法,比如一次传入固定长度byte[]
byte[] bytes = new byte[fin.available()];
// 将文件内容写入字节数组,提供测试的case
fin.read(bytes);
fin.close();
return bytes;
}