0

我需要通过 json 发送图像/媒体,因为需要将其转换为文本格式。如何通过 jQuery/Javascript 实现这一点?

4

2 回答 2

1

您可以在这篇文章中找到答案get image data in javascript

function getBase64Image(img) {
    // Create an empty canvas element
    var canvas = document.createElement("canvas");
    canvas.width = img.width;
    canvas.height = img.height;

    // Copy the image contents to the canvas
    var ctx = canvas.getContext("2d");
    ctx.drawImage(img, 0, 0);

    // Get the data-URL formatted image
    // Firefox supports PNG and JPEG. You could check img.src to guess the
    // original format, but be aware the using "image/jpg" will re-encode the image.
    var dataURL = canvas.toDataURL("image/png");

    return dataURL.replace(/^data:image\/(png|jpg);base64,/, "");
}

您需要将img标签传递给此函数。有关更多详细信息,请参阅在 javascript 中将图像转换为二进制数据

于 2013-02-06T10:34:24.983 回答
0

有几次我读到 jQuery 不提供下载二进制数据并将其作为字符串传递给 JavaScript 的功能。然后我遇到了这个问题。这让我开始思考,我写了一个$.ajax()看起来像这样的包装器(是的,它被简化以显示主要部分):

ajaxWrapper = function(url, dataType, callback, headers) {
    return $.ajax({
        url: url,
        dataType: dataType == "binary" ? "text" : dataType,
        mimeType: dataType == "binary" ? "text/plain; charset=x-user-defined" : undefined,
        headers: headers || {}
    }).done(function(data, status, jqXHR) {
        callback(data, status, jqXHR);
    });
}

然后,如果您正在处理 Unicode,则回调包含以下行:

data = btoa(unescape(encodeURIComponent(data)));

或者简单地说

data = btoa(data);

换句话说,如果您通读$.ajax() 的文档,您只需添加一个dataType“二进制文件”。

请注意,我使用 jQuery 1.7.1,但我不明白为什么它也不应该在以后的版本中工作。

于 2013-02-18T21:54:20.733 回答