JSON位图数据

是否可能或合理地将位图数据编码为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("

" + data.length + "

"); $('#output').append("

" + adl.positions.length + "

"); }, failure: function (msg) { $('#output').text(msg); } });

因为我的图像数据超出了标准的jsonSerialization缓冲区,所以我必须在web.config中增加一个值:

   
     
       
         
         
       
     
   

谢谢大家帮助。

位图是二进制数据。 JSON将表示为字符数据。 因此,您需要将二进制数据转换为字符数据,反之亦然,而不会丢失信息。 常用的编码是Base64 。 目前还不清楚你的目标是哪种编程语言,所以我无法给出更详细的答案,但几乎所有自尊的语言都有内置的Base64编码器或第三方库,可以做到这一点。 例如,PHP有base64_encode()base64_decode() 。 Java有Apache Commons Codec Base64 。 对于JavaScript,有这个例子 。 等等。

听起来像Binary JSON 。

二进制JSON,是类似JSON的文档的二进制编码序列化。 与JSON一样,BSON支持在其他文档和数组中嵌入文档和数组。 BSON还包含允许表示不属于JSON规范的数据类型的扩展。 例如,BSON具有Date类型和BinData类型。

可以将BSON与二进制交换格式(如协议缓冲区)进行比较。 BSON比协议缓冲器更“无模式”,这可以使其在灵活性方面具有优势,但在空间效率方面也略有不利(BSON在序列化数据中具有字段名称的开销)。

您可以使用数据uri( http://en.wikipedia.org/wiki/Data_URI_scheme )来解码编码的位图数据…尝试会很有趣:-)