Javascript iOS HTML5画布toDataURL
我需要一些帮助。关于通过HTML5/Canvas获取图像的base64,我们似乎在iOS上遇到了问题。如果我们使用画布的默认高度/宽度,或者对高度和宽度进行硬编码,则一切正常。但是,如果我们将画布的高度/宽度设置为图像src的高度/宽度,那么图像将不会加载到画布中,因此我们不会将图像作为base64 有效的代码段:Javascript iOS HTML5画布toDataURL,javascript,ios,html,canvas,Javascript,Ios,Html,Canvas,我需要一些帮助。关于通过HTML5/Canvas获取图像的base64,我们似乎在iOS上遇到了问题。如果我们使用画布的默认高度/宽度,或者对高度和宽度进行硬编码,则一切正常。但是,如果我们将画布的高度/宽度设置为图像src的高度/宽度,那么图像将不会加载到画布中,因此我们不会将图像作为base64 有效的代码段: function convertImageToBase64(imgUrl, callback) { var canvas = document.createElement("
function convertImageToBase64(imgUrl, callback) {
var canvas = document.createElement("canvas");
var context = canvas.getContext('2d');
// load image from data url
var imageObj= new Image();
imageObj.onload = function () {
var dataUrl;
context.drawImage(imageObj, 0, 0, canvas.width, canvas.height);
dataUrl = canvas.toDataURL("image/png");
callback.call(this, dataUrl);
canvas = null;
};
imageObj.src = imgUrl;
}
不适用于iOS但适用于Android的代码段:
function convertImageToBase64(imgUrl, callback) {
var canvas = document.createElement("canvas");
var context = canvas.getContext('2d');
// load image from data url
var imageObj= new Image();
imageObj.onload = function () {
var dataUrl;
canvas.width = imageObj.width;
canvas.height = imageObj.height;
context.drawImage(imageObj, 0, 0, canvas.width, canvas.height);
dataUrl = canvas.toDataURL("image/png");
callback.call(this, dataUrl);
canvas = null;
};
imageObj.src = imgUrl;
}
我们需要能够根据图像本身确定画布的高度/宽度
非常感谢您的指导或帮助。iOS的所有这些:
- 小于256 MB RAM的设备的解码GIF、PNG和TIFF图像的最大大小为300万像素,大于或等于256 MB RAM的设备的最大大小为500万像素
- 小于256 MB RAM的设备的画布元素的最大大小为300万像素,大于或等于256 MB RAM的设备的500万像素
- 对于每个顶级入口点,JavaScript执行时间限制为10秒
因此,这种限制为javascript API创建了一种不正常的行为 附录:这段代码片段在iPad Mini上确实有效,但在iPhone4w/iOS7x和iPhone5w/iOS8上存在问题。iPad MINI有iOS 8iOS,但在画布和图像方面有一些限制。检查一下。@Pinal谢谢,这就是我发现的问题所在。然而,我不能接受一个评论作为回答;P