Редактировать: Я немного поиграл с этим и заставил его работать. Проблема в том, когда вы устанавливаете imageData.data = n
. Похоже, что Chrome / WebKit не будет работать с другим массивом data
. Чтобы заставить его работать, я передал объект контекста flipV
и вызвал createImageData(imageData.width, imageData.height)
, чтобы получить свежий объект ImageData, установил n = newImageData.data
и возвратил newImageData
.
Остальное я оставлю здесь для справки:
Существует более простой и, скорее всего, более быстрый способ перевернуть изображение, который будет работать в разных доменах. Вы можете использовать функцию scale
для автоматического переворачивания всего, что вы рисуете вдоль оси y. Вам просто нужно обязательно позвонить save()
и restore()
и не забудьте изменить местоположение, так как все перевернуто.
function drawVFlipped(ctx, img) {
ctx.save();
// Multiply the y value by -1 to flip vertically
ctx.scale(1, -1);
// Start at (0, -height), which is now the bottom-left corner
ctx.drawImage(img, 0, -img.height);
ctx.restore();
}