Created
August 24, 2017 07:34
-
-
Save karlpokus/8ef4159f1029fa93c6d935a7918a6500 to your computer and use it in GitHub Desktop.
Strip EXIF from metadata from image file
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// https://stackoverflow.com/questions/27638402/strip-exif-data-from-image | |
// includes fiddle | |
function removeExif(res, cb) { | |
const dv = new DataView(res); | |
let offset = 0; | |
let recess = 0; | |
const pieces = []; | |
let i = 0; | |
if (dv.getUint16(offset) == 0xffd8) { | |
offset += 2; | |
let app1 = dv.getUint16(offset); | |
offset += 2; | |
while (offset < dv.byteLength) { | |
if (app1 == 0xffe1) { | |
pieces[i] = { recess, offset: offset - 2 }; | |
recess = offset + dv.getUint16(offset); | |
i++; | |
} | |
else if (app1 == 0xffda) { | |
break; | |
} | |
offset += dv.getUint16(offset); | |
let app1 = dv.getUint16(offset); | |
offset += 2; | |
} | |
if (pieces.length > 0){ | |
var newPieces = []; | |
pieces.forEach(function(v){ | |
newPieces.push(res.slice(v.recess, v.offset)); | |
}); | |
newPieces.push(res.slice(recess)); | |
var br = new Blob(newPieces, {type: 'image/jpeg'}); | |
cb(br); | |
} | |
} | |
} | |
function StripExifFromFile(file, cb) { | |
const fr = new FileReader(); | |
fr.onload = e => { | |
removeExif(e.target.result, cb); | |
}; | |
fr.readAsArrayBuffer(file); | |
} | |
// main fn call | |
StripExifFromFile(file, blob => { | |
const data = new FormData(); | |
data.append('file', blob); | |
// pass data to AJAX lib | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment