tags:

views:

75

answers:

3
+1  Q: 

JSON bitmap data

Is it possible, or reasonable, to encode bitmap data into JSON to be returned in a webservice?

Update: Yes, this worked better than I thought. I made a .NET composite object for a combination of images together with image data

Public Class AllThumbnails Public imgAllThumbs As String Public positions() As Drawing.Rectangle End Class

and accessed it via jQuery AJAX thusly:

$.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);
    }
});

I did have to increase a value in my web.config since my image data was overrunning the standard jsonSerialization buffer:

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

Thanks guys for your help.

+4  A: 

A bitmap is binary data. JSON is to be represented as character data. So you need to convert binary data to character data and vice versa without loss of information. A commonly used encoding for this is Base64. It's unclear which programming language you're targeting on, so I can't give a more detailed answer, but almost all self-respected languages have either a builtin Base64 encoder or a 3rd party library which can do that. PHP for example has base64_encode() and base64_decode(). Java has Apache Commons Codec Base64. For JavaScript there is this example. And so on.

BalusC
+1  A: 

Sounds like Binary JSON.

Robert Harvey
+1  A: 

You might be able to use a data uri (http://en.wikipedia.org/wiki/Data_URI_scheme) to decode encoded bitmap data... would be interesting to try :-)

Aerik