Skip to content

Instantly share code, notes, and snippets.

@obonyojimmy
Created November 20, 2017 23:58
Show Gist options
  • Save obonyojimmy/fb4ef1a98da9f6f7c6abd6b4355dce00 to your computer and use it in GitHub Desktop.
Save obonyojimmy/fb4ef1a98da9f6f7c6abd6b4355dce00 to your computer and use it in GitHub Desktop.
file reader read images
$(document).on('change', '#upload', addBackgroundImage);
function addBackgroundImage(event) {
var reader = new FileReader();
var readerBase64 = new FileReader();
var image = event.target.files[0];
reader.onloadend = function() {
var realMimeType = getRealMimeType(reader);
if (realMimeType !== 'unknown') {
readerBase64.readAsDataURL(image);
} else {
alert("Please upload a valid image file");
}
};
reader.readAsArrayBuffer(image);
readerBase64.onloadend = function(){
var base64 = this.result;
$('.bg').css('background-image', 'url('+base64+')');
};
$('#upload').val('');
}
function getRealMimeType(reader){
var arr = (new Uint8Array(reader.result)).subarray(0, 4);
var header = '';
var realMimeType;
for (var i = 0; i < arr.length; i++) {
header += arr[i].toString(16);
}
// magic numbers: http://www.garykessler.net/library/file_sigs.html
switch (header) {
case "89504e47":
realMimeType = "image/png";
break;
case "47494638":
realMimeType = "image/gif";
break;
case "ffd8ffDB":
case "ffd8ffe0":
case "ffd8ffe1":
case "ffd8ffe2":
case "ffd8ffe3":
case "ffd8ffe8":
realMimeType = "image/jpeg";
break;
default:
realMimeType = "unknown"; // Or you can use the blob.type as fallback
break;
}
return realMimeType;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment