Created
January 5, 2016 07:13
-
-
Save stormbreakers/7b73b30be4a008dadd86 to your computer and use it in GitHub Desktop.
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
function getOrientation(file, callback) { | |
var reader = new FileReader(); | |
reader.onload = function (e) { | |
var view = new DataView(e.target.result); | |
if (view.getUint16(0, false) != 0xFFD8) return callback(-2); | |
var length = view.byteLength, offset = 2; | |
while (offset < length) { | |
var marker = view.getUint16(offset, false); | |
offset += 2; | |
if (marker == 0xFFE1) { | |
var little = view.getUint16(offset += 8, false) == 0x4949; | |
offset += view.getUint32(offset + 4, little); | |
var tags = view.getUint16(offset, little); | |
offset += 2; | |
for (var i = 0; i < tags; i++) | |
if (view.getUint16(offset + (i * 12), little) == 0x0112) | |
return callback(view.getUint16(offset + (i * 12) + 8, little)); | |
} | |
else if ((marker & 0xFF00) != 0xFF00) break; | |
else offset += view.getUint16(offset, false); | |
} | |
return callback(-1); | |
}; | |
reader.readAsArrayBuffer(file.slice(0, 64 * 1024)); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment