Поверните загруженные изображения, содержащие ориентацию EXIF в Parse Cloud Code
Портретные фотографии, взятые с некоторых мобильных устройств, загруженные через HTML-форму, получают неправильную ориентацию, когда они встроены в веб-страницу.
Это связано с метаданными EXIF , который может иметь значение 6 = Rotate 90 CW
изображение, которое будет отображаться с определенной ориентацией. Однако само изображение - без метаданных - хранится боком в виде горизонтального изображения. В зависимости от средства визуализации изображения вы либо увидите изображение правильно (в качестве левого миниатюры ниже), либо без примененных метаданных вращения (в виде правого миниатюры). Для изображений, встроенных в веб-сайты, это последний.
![Portrait picture with EXIF orientation Rotate 90 CW, displayed with and without metadata applied]()
Есть ли способ повернуть загруженное изображение вручную, используя Javascript или Node.js, в веб-приложении, поддерживающем Parse Cloud Code? (Только код облака паролей поддерживает несколько зависимостей - но вы все равно можете сами загружать небольшие скрипты).
Ответы
Ответ 1
Я закончил писать класс на стороне клиента для поворота и изменения размера загруженных изображений. Я использую элемент Canvas и HTML5 FileReader.
Для исходного кода и некоторых примеров см. https://github.com/ajgarn/CanvasImageUploader.
Класс предоставляет вам данные изображения (Blob), которые можно отправить в Parse REST API так же, как вы бы загрузили файл через FileReader.
Ответ 2
Вы можете использовать npm модули в облачном коде: Использование модулей npm в облачном коде
Как только вы это сделаете, модуль jpegorientation npm должен соответствовать вашим требованиям:
var jpeg = require('jpegorientation');
jpeg.autoRotate('image.jpg', function (err) {
// error handler
});
Если вы не можете заставить модули npm работать, вы всегда можете включить библиотеку вручную. Если у вас возникли проблемы с этой библиотекой и node -gyp, есть и другие модули: