Как удалить EXIF-данные из изображения с помощью javascript?

Я читаю в файле из ввода HTML файла. Для iOS я могу сделать снимок с камеры. Проблема в том, что если вы сделаете снимок с камерой, содержимое будет содержать данные EXIF ​​(по крайней мере, если я прочитаю содержимое файла с помощью API FileReader).

Я не могу использовать обрезку холста, если изображение содержит данные EXIF. Потому как изображение будет уничтожено каждый раз, когда я вызываю .toDataURL(). Мое предположение он не распознает данные EXIF ​​и не знает, как обрезать изображение с помощью EXIF.

Содержимое файла base64 кодируется FileReader.readAsDataURL(). И я вставляю его в img.src.

Обрезка выполняется путем рисования нового изображения с помощью ctx.drawImage(...), основанного на старом изображении и я наконец получил новые данные изображения с помощью c.toDataURL().

Итак, мой вопрос: как удалить данные EXIF ​​с помощью javascript?

Ответ 1

Отметьте, что вы писали:

изображение уничтожается

Я думаю, что проблема не в данных EXIF. Я думаю, что у вас есть ограничение canvas iOS:

Максимальный размер элемента холста - 3 мегапикселя для устройств с менее 256 МБ ОЗУ и 5 мегапикселей для устройств с большим или равной 256 МБ ОЗУ.

Эти ограничения не вызывают никаких ошибок, поэтому вы попытаетесь отобразить или прочитать 6MB-изображение, вы получите сломанную строку blob/dataURL и так далее. И вы подумаете, что File API сломан, методы canvas toDataURL/toBlob нарушены, и вы будете правы. Но ошибки не в браузере, это системное ограничение.

Известные библиотеки, которые фиксируют ограничения iOS: