Ich habe es noch nicht geschafft zu verwenden base64
, aber ich habe einen Weg gefunden, es mit blob
zu tun. Wenn Sie einen Weg finden, es mit base64
zu tun, fügen Sie bitte Ihre Antwort hinzu.
Im Moment sieht mein Bild Zeichenfolge wie diese, die ich erzeugen glauben Sie mir einige Probleme:
background-image: url("blob:https%3A//fiddle.jshell.net/214b3c01-5b38-4aae-b839-e35cf57a5190");
bekam ich den Hinweis von einer Geige über how to render a retrieved image as a blob URL
Dann einfach angewendet ich es zu meinem Code mit a little improvement und voila !!
Reproduction online in IE Arbeitsgruppe> 9, Chrome, Firefox ...
Whole Code:
HTML
<input type="file" id="upload" />
<div class="bg"></div>
Javascript
$(document).on('change', '#upload', addBackgroundImage);
function addBackgroundImage(event) {
var reader = new FileReader();
reader.onloadend = function(event) {
var realMimeType = getRealMimeType(reader);
if (realMimeType !== 'unknown') {
var base64 = reader.result;
var arrayBufferView = new Uint8Array(this.result);
var blob = new Blob([ arrayBufferView ], { type: realMimeType });
var urlCreator = window.URL || window.webkitURL || {}.createObjectURL;
var imageUrl = urlCreator.createObjectURL(blob);
$('.bg').css('background-image', 'url('+imageUrl+')');
} else {
alert("Please upload a valid image file");
}
}
reader.readAsArrayBuffer(event.target.files[0]);
$('#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;
}
Wo hast du die Liste der Magie b erhalten Ytes? Seien Sie gut, das zu erwähnen, aber +1 in jedem Fall. –
Erinnern Sie sich nicht an die genaue Quelle, aber googlen ein bisschen. Sie können einige von ihnen hier finden: https://en.wikipedia.org/wiki/List_of_file_signatures – Alvaro
Ok danke. Es scheint, als gäbe es keine "Gehe zu" -Referenz dafür. Ich habe hier Informationen gefunden (http://www.nationalarchives.gov.uk/PRONOM/Default.aspx), aber nicht die einfachste Website zum Navigieren. –