Błąd proporcji HTML5 Canvas drawImage iOS

Chcę zmienić rozmiar obrazu pobranego z kamery iOS po stronie klienta za pomocą HTML5 Canvas, ale nadal działam w tym dziwnym błędzie, w którym obraz ma zły współczynnik, jeśli jest większy niż ~ 1,5 mb

Działa na pulpicie, ale nie w najnowszej wersji iOS z interfejsem API do przesyłania multimediów.

Możesz zobaczyć przykład tutaj:http://jsbin.com/ekuros/1

Masz jakiś pomysł, jak to naprawić? Czy to problem z pamięcią?

$('#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);
});

questionAnswers(5)

yourAnswerToTheQuestion