Saya mengambil gambar Blob dari database, dan saya ingin bisa melihat gambar itu menggunakan JavaScript. Kode berikut menghasilkan ikon gambar rusak di halaman:
var image = document.createElement('image');
image.src = 'data:image/bmp;base64,'+Base64.encode(blob);
document.body.appendChild(image);
Berikut adalah jsFiddle yang berisi semua kode yang diperlukan, termasuk blob. Kode lengkap harus menampilkan gambar dengan benar.
javascript
image
base64
blob
GAgnew
sumber
sumber
document.createElement('img');
gantinyadocument.createElement('image');?
Jawaban:
Anda juga bisa mendapatkan objek BLOB langsung dari XMLHttpRequest. Menyetel responseType ke blob membuat triknya. Ini kode saya:
var xhr = new XMLHttpRequest(); xhr.open("GET", "http://localhost/image.jpg"); xhr.responseType = "blob"; xhr.onload = response; xhr.send();
Dan fungsi responnya terlihat seperti ini:
function response(e) { var urlCreator = window.URL || window.webkitURL; var imageUrl = urlCreator.createObjectURL(this.response); document.querySelector("#image").src = imageUrl; }
Kami hanya perlu membuat elemen gambar kosong di HTML:
<img id="image"/>
sumber
urlCreator.createObjectURL(blob)
yang mengembalikan imageUrl yang dapat ditetapkan ke gambar src.img
- tag secara langsung daripada melakukan XHR / fetch; karena keduanya rawan SOP.Jika Anda ingin menggunakan fetch:
var myImage = document.querySelector('img'); fetch('flowers.jpg').then(function(response) { return response.blob(); }).then(function(myBlob) { var objectURL = URL.createObjectURL(myBlob); myImage.src = objectURL; });
Sumber:
https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch
sumber
if (typeof URL !== "function") {}
Anda dapat mengonversi string Anda menjadi Uint8Array untuk mendapatkan data mentah. Kemudian buat Blob untuk data tersebut dan teruskan ke URL.createObjectURL (blob) untuk mengonversi Blob menjadi URL yang Anda teruskan ke img.src .
var data = '424D5E070000000000003E00000028000000EF...'; // Convert the string to bytes var bytes = new Uint8Array(data.length / 2); for (var i = 0; i < data.length; i += 2) { bytes[i / 2] = parseInt(data.substring(i, i + 2), /* base = */ 16); } // Make a Blob from the bytes var blob = new Blob([bytes], {type: 'image/bmp'}); // Use createObjectURL to make a URL for the blob var image = new Image(); image.src = URL.createObjectURL(blob); document.body.appendChild(image);
Anda dapat mencoba contoh lengkapnya di: http://jsfiddle.net/nj82y73d/
sumber
Dalam contoh Anda, Anda harus
createElement('img')
.Di tautan Anda
base64blob != Base64.encode(blob)
,.Ini berfungsi, selama data Anda valid http://jsfiddle.net/SXFwP/ (Saya tidak punya gambar BMP jadi saya harus menggunakan PNG).
sumber
Saya kira Anda mengalami kesalahan dalam kode sebaris gambar Anda. Coba ini :
var image = document.createElement('img'); image.src="data:image/gif;base64,R0lGODlhDwAPAKECAAAAzMzM/////wAAACwAAAAADwAPAAACIISPeQHsrZ5ModrLlN48CXF8m2iQ3YmmKqVlRtW4MLwWACH+H09wdGltaXplZCBieSBVbGVhZCBTbWFydFNhdmVyIQAAOw=="; image.width=100; image.height=100; image.alt="here should be some image"; document.body.appendChild(image);
Link yang berguna : http://dean.edwards.name/my/base64-ie.html
sumber
Masalahnya adalah saya memiliki data heksadesimal yang perlu dikonversi ke biner sebelum dikodekan base64.
dalam PHP:
base64_encode(pack("H*", $subvalue))
sumber
Dalam biola, blob Anda bukanlah blob, melainkan representasi string dari data heksadesimal. Coba ini pada blob dan selesai
var image = document.createElement('img'); let reader=new FileReader() reader.addEventListener('loadend',()=>{ let contents=reader.result image.src = contents document.body.appendChild(image); }) if(blob instanceof Blob) reader.readAsDataURL(blob)
readAsDataURL memberi Anda gambar berenkode base64 yang siap untuk Anda elemen gambar () sumber (src)
sumber