Подтвердить что ты не робот

Удаление данных EXIF ​​с изображения

Как я могу удалить данные EXIF ​​из загруженного изображения через javascript? В настоящее время я могу получить доступ к данным EXIF, используя этот exif-js-плагин, например:

EXIF.getData(oimg, function() {
    var orientation = EXIF.getTag(this, "Orientation");
});

Однако я не нашел способа удалить данные Exif, только чтобы получить его.

В частности, я пытаюсь сделать это, чтобы избавиться от ориентированных данных Exif, которые вращают мое изображение в определенных браузерах.

4b9b3361

Ответ 1


Вот небольшая демонстрация этого, выберите изображение с данными ориентации, чтобы посмотреть, как он выглядит и с ним (современные браузеры).

http://jsfiddle.net/mowglisanu/frhwm2xe/3/

<input id="erd" type="file"/>
var input = document.querySelector('#erd');
input.addEventListener('change', load);
function load(){
    var fr = new FileReader();
    fr.onload = process;
    fr.readAsArrayBuffer(this.files[0]);
    window.open(URL.createObjectURL(this.files[0]), "_blank", "toolbar=yes, scrollbars=yes, resizable=yes, top=500, left=500, width=400, height=400");
}
function process(){
    var dv = new DataView(this.result);
    var offset = 0, recess = 0;
    var pieces = [];
    var i = 0;
    if (dv.getUint16(offset) == 0xffd8){
        offset += 2;
        var app1 = dv.getUint16(offset);
        offset += 2;
        while (offset < dv.byteLength){
            console.log(offset, '0x'+app1.toString(16), recess);
            if (app1 == 0xffe1){

                pieces[i] = {recess:recess,offset:offset-2};
                recess = offset + dv.getUint16(offset);
                i++;
            }
            else if (app1 == 0xffda){
                break;
            }
            offset += dv.getUint16(offset);
            var app1 = dv.getUint16(offset);
            offset += 2;
        }
        if (pieces.length > 0){
            var newPieces = [];
            pieces.forEach(function(v){
                newPieces.push(this.result.slice(v.recess, v.offset));
            }, this);
            newPieces.push(this.result.slice(recess));
            var br = new Blob(newPieces, {type: 'image/jpeg'});
            window.open(URL.createObjectURL(br), "_blank", "toolbar=yes, scrollbars=yes, resizable=yes, top=500, left=500, width=400, height=400");
        }
    }       
}