如何将二进制数据显示为图像

时间:2016-12-15 19:22:14

标签: javascript c#

我一直在尝试在图片中显示二进制数据,但事情没有按预期工作。

在服务器端(c#),我发送像我这样的字节[]

context.HttpContext.Response.Clear();
context.HttpContext.Response.ContentType = "image/png";
context.HttpContext.Response.BinaryWrite(ImageBytes);
context.HttpContext.ApplicationInstance.CompleteRequest();

在客户端

$.ajax({
    url: '/Main/RenderPDF',
    type: "POST",
    data: JSON.stringify(serverObj),
    dataType: "binary",
    processData: false,
    headers: {
        'Content-Type': 'application/json; charset=utf-8',
        'X-Requested-With': 'XMLHttpRequest',
        '__RequestVerificationToken': '',
        '__RequestVerificationToken': $('#__AjaxAntiForgeryForm input[name=__RequestVerificationToken]').val()
    },
    success: function (data, textStatus, request) {

        var headers = ['docId', 'pageHeight', 'pageWidth', 'width', 'height', 'pageNumber'],
            response = {};
        _.forEach(headers, function (item) { response[item] = request.getResponseHeader(item) })
        response.imageBytes = hexToBase64(data);
        callBack(response);
    }
});

function hexToBase64(str) {
    return btoa(String.fromCharCode.apply(null, str.replace(/\r|\n/g, "").replace(/([\da-fA-F]{2}) ?/g, "0x$1   ").replace(/ +$/, "").split(" ")));
}

它会破坏hexToBase64上的代码并使用普通字节并附加图像

 $img.attr('src', "data:image/png;base64," +response.imageBytes);

问题就是这个,当我在vs中调试时得到像

这样的东西

enter image description here

我不知道为什么它不起作用可以帮助我需要改变或修复的东西

任何帮助将不胜感激 此致

0 个答案:

没有答案