Catatan: Ini hanya berfungsi jika gambar berasal dari domain yang sama dengan halaman, atau memiliki crossOrigin="anonymous"
atribut dan server mendukung CORS. Ini juga tidak akan memberi Anda file asli, tetapi versi yang disandikan ulang. Jika Anda ingin hasilnya identik dengan aslinya, lihat jawaban Kaiido .
Anda harus membuat elemen kanvas dengan dimensi yang benar dan menyalin data gambar dengan drawImage
fungsinya. Kemudian Anda dapat menggunakan toDataURL
fungsi untuk mendapatkan data: url yang memiliki gambar dasar-64 yang disandikan. Perhatikan bahwa gambar harus dimuat sepenuhnya, atau Anda hanya akan mendapatkan kembali gambar kosong (hitam, transparan).
Itu akan menjadi seperti ini. Saya tidak pernah menulis skrip Greasemonkey, jadi Anda mungkin perlu menyesuaikan kode untuk dijalankan di lingkungan itu.
function getBase64Image(img) {
// Create an empty canvas element
var canvas = document.createElement("canvas");
canvas.width = img.width;
canvas.height = img.height;
// Copy the image contents to the canvas
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0);
// Get the data-URL formatted image
// Firefox supports PNG and JPEG. You could check img.src to
// guess the original format, but be aware the using "image/jpg"
// will re-encode the image.
var dataURL = canvas.toDataURL("image/png");
return dataURL.replace(/^data:image\/(png|jpg);base64,/, "");
}
Mendapatkan gambar berformat JPEG tidak berfungsi pada versi Firefox yang lebih lama (sekitar 3,5), jadi jika Anda ingin mendukungnya, Anda perlu memeriksa kompatibilitasnya. Jika pengkodean tidak didukung, itu akan default ke "image / png".