我需要通过 json 发送图像/媒体,因为需要将其转换为文本格式。如何通过 jQuery/Javascript 实现这一点?
问问题
2687 次
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 回答