js如何将压缩过的字节数组转换为图片展示在前台

工程需求,我后台生成一个图片传输,用字节数组传输给前台,前台展示,因为字节数组过大,导致报文过长,我便把字节数组压缩后传输到前台,这种情况下,我前台如何利用js在前台展示出这张图片?

4个回答

gzip, deflate压缩的浏览器会自动解压的,不需要js干预,如果使用了浏览器不支持其他压缩算法就得自己谷歌你使用到的算法了

qq_15782055
qq_15782055 回复showbo: 谢谢您了,我突然发现自己思路好像有问题,图片压缩几乎没有减少报文大小,我还是要考虑如何减少图片大小。不过还是要谢谢您,我已经采纳您了
一年多之前 回复
showbo
支付宝加好友偷能量挖 改gzip直接img加载你的动态就能显示图片了,zip你要搞好多东东
一年多之前 回复
showbo
支付宝加好友偷能量挖 回复qq_15782055: https://gildas-lormeau.github.io/zip.js/core-api.html#zip-reading-example按照api来弄,用xhr加载后生成blob(参考这个:http://www.w3dev.cn/article/20170815/XMLHttpRequest-load-vido-file-binary-to-play.aspx)可以加载到zip里面了。不过建议改成gzip压缩,要不低版本浏览器不支持的,用到和很多h5的api
一年多之前 回复
qq_15782055
qq_15782055 大佬,不会用,网上也没有找到多少资料
一年多之前 回复
showbo
支付宝加好友偷能量挖 回复qq_15782055: 有zip.js类库。https://gildas-lormeau.github.io/zip.js/
一年多之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 正解。可以让后台压缩成jpg png再传输,可以减小体积。或者降低分辨率。
一年多之前 回复
qq_15782055
qq_15782055 我使用的压缩方式时zip压缩,请问这种方式该怎么办?
一年多之前 回复

给你试了一下,
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;
}

你数据库中的图片拿出来的是byte[]型的吗,如果是得先对图片进行64位编码再发送到前台。

congyeyan9940
笨笨的程序员啊 回复qq_15782055: 不会的 这个一般适用于较小但使用多的图片 比如图标之类的
一年多之前 回复
qq_15782055
qq_15782055 我现在报文中是发的byte数组,如果我进行64位编码会减少的的报文大小吗?
一年多之前 回复

前台对图片展示设置图片的大小即可

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问