java后台返回了一段hex数据,前端如何转化为图片?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java后台返回了一段hex数据,前端如何转化为图片?相关的知识,希望对你有一定的参考价值。

链接: https://pan.baidu.com/s/1PE65btIqbONdQh1E8lu0WA 提取码: hxr8 数据太长,直接存网盘了,请问在前端如何显示出来? 谢谢!!

两种思路,一种是你把图片下下来。告诉路径给前端。
另一种是你直接把图片转换成byte数组,返回给前端。前端是可以有办法的。(我用过这种用来爬虫爬验证码都是这么干的)
参考技术A if (!window.atob) var tableStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var table = tableStr.split("");

window.atob = function (base64) if (/(=[^=]+|=3,)$/.test(base64)) throw new Error("String contains an invalid character");
base64 = base64.replace(/=/g, ""); var n = base64.length & 3; if (n === 1) throw new Error("String contains an invalid character"); for (var i = 0, j = 0, len = base64.length / 4, bin = []; i < len; ++i) var a = tableStr.indexOf(base64[j++] || "A"), b = tableStr.indexOf(base64[j++] || "A"); var c = tableStr.indexOf(base64[j++] || "A"), d = tableStr.indexOf(base64[j++] || "A"); if ((a | b | c | d) < 0) throw new Error("String contains an invalid character");
bin[bin.length] = ((a << 2) | (b >> 4)) & 255;
bin[bin.length] = ((b << 4) | (c >> 2)) & 255;
bin[bin.length] = ((c << 6) | d) & 255;
; return String.fromCharCode.apply(null, bin).substr(0, bin.length + n - 4);
;

window.btoa = function (bin) for (var i = 0, j = 0, len = bin.length / 3, base64 = []; i < len; ++i) var a = bin.charCodeAt(j++), b = bin.charCodeAt(j++), c = bin.charCodeAt(j++); if ((a | b | c) > 255) throw new Error("String contains an invalid character");
base64[base64.length] = table[a >> 2] + table[((a << 4) & 63) | (b >> 4)] +
(isNaN(b) ? "=" : table[((b << 2) & 63) | (c >> 6)]) +
(isNaN(b + c) ? "=" : table[c & 63]);
return base64.join("");
;



function hexToBase64(str) return btoa(String.fromCharCode.apply(null,
str.replace(/\r|\n/g, "").replace(/([\da-fA-F]2) ?/g, "0x$1 ").replace(/ +$/, "").split(" "))
);


function base64ToHex(str) for (var i = 0, bin = atob(str.replace(/[ \r\n]+$/, "")), hex = []; i < bin.length; ++i) var tmp = bin.charCodeAt(i).toString(16); if (tmp.length === 1) tmp = "0" + tmp;
hex[hex.length] = tmp;
return hex.join(" ");

JavaDate数据返回到前端变数字的问题

前端一般传参时间类型到后台 一般用Date接收没有问题,但是后台返回时间类型 前端一般需要转换  这里可以避免该问题

然后这里就要用到一个东西:

@JsonFormat,它的作用是,出参时,自动把Date型对象数据转化成正确的格式化后的字符串出去

@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
//@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date eTime;//归档时间,也是归档的版本号

结论是:

1.前端如果传来的是json数据,时间格式是正确的,那么@JsonFormat是可以正确将其转换成Date类型的。

2.前端如果传来的是json数据,时间格式是正确的,那么@DateTimeFormat是可以正确将其转换成Date类型的。

3.但是,用json出参时用注解@DateTimeFormat似乎行不通,就是前面的问题,json返回Date对象时,java的序列化会把date变成一串数字,然后@dataTimeFormat似乎无法解决这个问题。

 

结论:

1.如果前后端传的数据都是json,那么后台接数据,传数据都可以用@JsonFormat。

[email protected]适合后端  接收   前端传来的数据,不管是不是json都可以正确转换成Date型数据,只要前端传来的格式正确且后端@DateTimeFormat的pattern写正确了,但是这个注解无法将Date型数据用json传到后端去

 



以上是关于java后台返回了一段hex数据,前端如何转化为图片?的主要内容,如果未能解决你的问题,请参考以下文章

JAVA后台如何返回数据给前台?前台怎么取到数据呢?

如何用JS将一段十六进制(HEX)字符串转换为汉字?

Java后台的BigDecimal类型转为json返回前端时,原本为null的到了前端却变成

关于JavaDate数据返回到前端变数字的问题

vb 时间戳转换成时间

java后台处理前端返回的json数据