是否可能或合理地将位图数据编码为JSON以在Web服务中返回?
更新:是的,这比我想象的要好.我为一组图像和图像数据组合创建了一个.NET复合对象
Public Class AllThumbnails Public imgAllThumbs As String Public positions()As Drawing.Rectangle End Class
并通过jQuery AJAX访问它:
$.ajax({
type: "POST",
url: "WebService.asmx/makeAllThumbnailsImage",
data: "{DocumentNumber : \"" + DocumentNumber + "\"} ",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
var adl = (typeof response.d) == 'string' ? eval('(' + response.d + ')') : response.d;
var data = Base64.decode(adl.imgAllThumbs);
$('#output').append("<p><strong>" + data.length + "</strong></p>");
$('#output').append("<p><strong><i>" + adl.positions.length + "<i></strong></p>");
},
failure: function (msg) {
$('#output').text(msg);
}
});
Run Code Online (Sandbox Code Playgroud)
因为我的图像数据超出了标准的jsonSerialization缓冲区,所以我必须在web.config中增加一个值:
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="262144">
</jsonSerialization>
</webServices>
</scripting>
</system.web.extensions>
谢谢大家帮助.
位图是二进制数据.JSON将表示为字符数据.因此,您需要将二进制数据转换为字符数据,反之亦然,而不会丢失信息.常用的编码是Base64.目前还不清楚你的目标是哪种编程语言,所以我无法给出更详细的答案,但几乎所有自尊的语言都有内置的Base64编码器或第三方库,可以做到这一点.PHP例如有base64_encode()和base64_decode().Java有Apache Commons Codec Base64.对于JavaScript,有这个例子.等等.