HTML5 Canvas drawImage比率错误iOS

我想使用HTML5 Canvas调整从客户端iOS摄像头拍摄的图像的大小,但是我一直在运行这个怪异的bug,该图像中的图像比例大于1.5mb时显示错误的比例

它可以在桌面上运行,但不能在具有媒体上传API的最新iOS版本中使用。

知道如何解决这个问题吗?这是内存问题吗?

$('#file').on('change', function (e) {

var file = e.currentTarget.files[0];

var reader = new FileReader();

reader.onload = function (e) {

var image = $('<img/>');

image.on('load', function () {

var square = 320;

var canvas = document.createElement('canvas');

canvas.width = square;

canvas.height = square;

var context = canvas.getContext('2d');

context.clearRect(0, 0, square, square);

var imageWidth;

var imageHeight;

var offsetX = 0;

var offsetY = 0;

if (this.width > this.height) {

imageWidth = Math.round(square * this.width / this.height);

imageHeight = square;

offsetX = - Math.round((imageWidth - square) / 2);

} else {

imageHeight = Math.round(square * this.height / this.width);

imageWidth = square;

offsetY = - Math.round((imageHeight - square) / 2);

}

context.drawImage(this, offsetX, offsetY, imageWidth, imageHeight);

var data = canvas.toDataURL('image/jpeg');

var thumb = $('<img/>');

thumb.attr('src', data);

$('body').append(thumb);

});

image.attr('src', e.target.result);

};

reader.readAsDataURL(file);

});

回答:

有一个JavaScript画布调整大小库,可解决在iOS设备上在画布上绘制缩放图像时遇到的二次采样和垂直压扁问题:

当使用Alpha通道缩放图像(因为它使用Alpha通道进行问题检测)以及尝试调整现有画布元素的大小时,存在一些附带问题,但这是我发现的第一个实际解决此问题的方法。

以上是 HTML5 Canvas drawImage比率错误iOS 的全部内容, 来源链接: utcz.com/qa/424003.html

回到顶部