代码之家  ›  专栏  ›  技术社区  ›  Jon DellOro

JSON位图数据

  •  2
  • Jon DellOro  · 技术社区  · 16 年前

    是否可能或合理地将位图数据编码为JSON以在WebService中返回?

    更新:是的,这比我想象的好。我创建了一个.NET复合对象,用于图像和图像数据的组合

    公共类所有缩略图 公共imgallThumbs作为字符串 公共位置()作为绘图。矩形 端类

    并通过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);
        }
    });
    

    我确实需要在web.config中增加一个值,因为我的图像数据超出了标准JSonSerialization缓冲区:

      <system.web.extensions>
        <scripting>
          <webServices>
            <jsonSerialization maxJsonLength="262144">
            </jsonSerialization>
          </webServices>
        </scripting>
      </system.web.extensions>
    

    谢谢你们的帮助。

    3 回复  |  直到 12 年前
        1
  •  8
  •   BalusC    16 年前

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

        2
  •  2
  •   Robert Harvey    12 年前

    听起来像 Binary JSON .

    Bin ary JSON是一个Bin ary en编码的系列,类似于JSON 医生。像JSON一样,BSON支持医生的床位设计。 以及带有其他医生和AR射线的AR射线。BSON也 考虑到数据类型的低代表性 这不是JSON规范的一部分。例如,BSON有一个日期类型 和bindata类型。

    BSON可以像Proto col那样,与Bin ary Inter change for mats结合使用。 Buffes。BSON比Proto-Col Buf-fers更“缺乏模式”,后者 可以让它有一个灵活的时代,但也有一点 太空探索效率(BSON已经超越了战场 系列化数据中带有“194”的名称)。

        3
  •  1
  •   Aerik    16 年前

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

    推荐文章