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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With