Có nhiều cách tiếp cận bạn có thể chọn:
1. Cách tiếp cận: Người làm phim
Tải hình ảnh dưới dạng blob thông qua xmlhttprequest và sử dụng API Filereader [ReadAsDataurl []] để chuyển đổi nó thành DataURL:
function toDataURL[url, callback] {
var xhr = new XMLHttpRequest[];
xhr.onload = function[] {
var reader = new FileReader[];
reader.onloadend = function[] {
callback[reader.result];
}
reader.readAsDataURL[xhr.response];
};
xhr.open['GET', url];
xhr.responseType = 'blob';
xhr.send[];
}
toDataURL['//www.gravatar.com/avatar/d50c83cc0c6523b4d3f6085295c953e0', function[dataUrl] {
console.log['RESULT:', dataUrl]
}]
Ví dụ mã này cũng có thể được triển khai bằng API WhatWG Fetch:
const toDataURL = url => fetch[url]
.then[response => response.blob[]]
.then[blob => new Promise[[resolve, reject] => {
const reader = new FileReader[]
reader.onloadend = [] => resolve[reader.result]
reader.onerror = reject
reader.readAsDataURL[blob]
}]]
toDataURL['//www.gravatar.com/avatar/d50c83cc0c6523b4d3f6085295c953e0']
.then[dataUrl => {
console.log['RESULT:', dataUrl]
}]
Những cách tiếp cận này:
- Có nén tốt hơn
- Làm việc cho các loại tệp khác
Hỗ trợ trình duyệt:
- //caniuse.com/#feat=filereader
- //caniuse.com/#feat=fetch
2. Cách tiếp cận: Canvas
Tải hình ảnh vào một đối tượng hình ảnh, vẽ nó vào một tấm bạt không được làm và chuyển đổi khung vẽ trở lại một dataurl.
function toDataURL[src, callback, outputFormat] {
var img = new Image[];
img.crossOrigin = 'Anonymous';
img.onload = function[] {
var canvas = document.createElement['CANVAS'];
var ctx = canvas.getContext['2d'];
var dataURL;
canvas.height = this.naturalHeight;
canvas.width = this.naturalWidth;
ctx.drawImage[this, 0, 0];
dataURL = canvas.toDataURL[outputFormat];
callback[dataURL];
};
img.src = src;
if [img.complete || img.complete === undefined] {
img.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";
img.src = src;
}
}
toDataURL[
'//www.gravatar.com/avatar/d50c83cc0c6523b4d3f6085295c953e0',
function[dataUrl] {
console.log['RESULT:', dataUrl]
}
]
Chi tiết
Các định dạng đầu vào được hỗ trợ:
const toDataURL = url => fetch[url]
.then[response => response.blob[]]
.then[blob => new Promise[[resolve, reject] => {
const reader = new FileReader[]
reader.onloadend = [] => resolve[reader.result]
reader.onerror = reject
reader.readAsDataURL[blob]
}]]
toDataURL['//www.gravatar.com/avatar/d50c83cc0c6523b4d3f6085295c953e0']
.then[dataUrl => {
console.log['RESULT:', dataUrl]
}]
0, const toDataURL = url => fetch[url]
.then[response => response.blob[]]
.then[blob => new Promise[[resolve, reject] => {
const reader = new FileReader[]
reader.onloadend = [] => resolve[reader.result]
reader.onerror = reject
reader.readAsDataURL[blob]
}]]
toDataURL['//www.gravatar.com/avatar/d50c83cc0c6523b4d3f6085295c953e0']
.then[dataUrl => {
console.log['RESULT:', dataUrl]
}]
1, const toDataURL = url => fetch[url]
.then[response => response.blob[]]
.then[blob => new Promise[[resolve, reject] => {
const reader = new FileReader[]
reader.onloadend = [] => resolve[reader.result]
reader.onerror = reject
reader.readAsDataURL[blob]
}]]
toDataURL['//www.gravatar.com/avatar/d50c83cc0c6523b4d3f6085295c953e0']
.then[dataUrl => {
console.log['RESULT:', dataUrl]
}]
2, const toDataURL = url => fetch[url]
.then[response => response.blob[]]
.then[blob => new Promise[[resolve, reject] => {
const reader = new FileReader[]
reader.onloadend = [] => resolve[reader.result]
reader.onerror = reject
reader.readAsDataURL[blob]
}]]
toDataURL['//www.gravatar.com/avatar/d50c83cc0c6523b4d3f6085295c953e0']
.then[dataUrl => {
console.log['RESULT:', dataUrl]
}]
3, const toDataURL = url => fetch[url]
.then[response => response.blob[]]
.then[blob => new Promise[[resolve, reject] => {
const reader = new FileReader[]
reader.onloadend = [] => resolve[reader.result]
reader.onerror = reject
reader.readAsDataURL[blob]
}]]
toDataURL['//www.gravatar.com/avatar/d50c83cc0c6523b4d3f6085295c953e0']
.then[dataUrl => {
console.log['RESULT:', dataUrl]
}]
4, const toDataURL = url => fetch[url]
.then[response => response.blob[]]
.then[blob => new Promise[[resolve, reject] => {
const reader = new FileReader[]
reader.onloadend = [] => resolve[reader.result]
reader.onerror = reject
reader.readAsDataURL[blob]
}]]
toDataURL['//www.gravatar.com/avatar/d50c83cc0c6523b4d3f6085295c953e0']
.then[dataUrl => {
console.log['RESULT:', dataUrl]
}]
5, const toDataURL = url => fetch[url]
.then[response => response.blob[]]
.then[blob => new Promise[[resolve, reject] => {
const reader = new FileReader[]
reader.onloadend = [] => resolve[reader.result]
reader.onerror = reject
reader.readAsDataURL[blob]
}]]
toDataURL['//www.gravatar.com/avatar/d50c83cc0c6523b4d3f6085295c953e0']
.then[dataUrl => {
console.log['RESULT:', dataUrl]
}]
6, const toDataURL = url => fetch[url]
.then[response => response.blob[]]
.then[blob => new Promise[[resolve, reject] => {
const reader = new FileReader[]
reader.onloadend = [] => resolve[reader.result]
reader.onerror = reject
reader.readAsDataURL[blob]
}]]
toDataURL['//www.gravatar.com/avatar/d50c83cc0c6523b4d3f6085295c953e0']
.then[dataUrl => {
console.log['RESULT:', dataUrl]
}]
7, const toDataURL = url => fetch[url]
.then[response => response.blob[]]
.then[blob => new Promise[[resolve, reject] => {
const reader = new FileReader[]
reader.onloadend = [] => resolve[reader.result]
reader.onerror = reject
reader.readAsDataURL[blob]
}]]
toDataURL['//www.gravatar.com/avatar/d50c83cc0c6523b4d3f6085295c953e0']
.then[dataUrl => {
console.log['RESULT:', dataUrl]
}]
8, const toDataURL = url => fetch[url]
.then[response => response.blob[]]
.then[blob => new Promise[[resolve, reject] => {
const reader = new FileReader[]
reader.onloadend = [] => resolve[reader.result]
reader.onerror = reject
reader.readAsDataURL[blob]
}]]
toDataURL['//www.gravatar.com/avatar/d50c83cc0c6523b4d3f6085295c953e0']
.then[dataUrl => {
console.log['RESULT:', dataUrl]
}]
9Các định dạng đầu ra được hỗ trợ:
const toDataURL = url => fetch[url]
.then[response => response.blob[]]
.then[blob => new Promise[[resolve, reject] => {
const reader = new FileReader[]
reader.onloadend = [] => resolve[reader.result]
reader.onerror = reject
reader.readAsDataURL[blob]
}]]
toDataURL['//www.gravatar.com/avatar/d50c83cc0c6523b4d3f6085295c953e0']
.then[dataUrl => {
console.log['RESULT:', dataUrl]
}]
0, const toDataURL = url => fetch[url]
.then[response => response.blob[]]
.then[blob => new Promise[[resolve, reject] => {
const reader = new FileReader[]
reader.onloadend = [] => resolve[reader.result]
reader.onerror = reject
reader.readAsDataURL[blob]
}]]
toDataURL['//www.gravatar.com/avatar/d50c83cc0c6523b4d3f6085295c953e0']
.then[dataUrl => {
console.log['RESULT:', dataUrl]
}]
1, ________ 18 [Chrome]Hỗ trợ trình duyệt:
- //caniuse.com/#feat=canvas
2. Cách tiếp cận: Canvas
Tải hình ảnh vào một đối tượng hình ảnh, vẽ nó vào một tấm bạt không được làm và chuyển đổi khung vẽ trở lại một dataurl.
Chi tiết
function encodeImageFileAsURL[element] {
var file = element.files[0];
var reader = new FileReader[];
reader.onloadend = function[] {
console.log['RESULT', reader.result]
}
reader.readAsDataURL[file];
}
Trong hướng dẫn ngắn này, chúng tôi khám phá 3 phương thức JavaScript khác nhau để chuyển đổi hình ảnh thành chuỗi base64. Chúng tôi xem xét chuyển đổi một đối tượng tệp hoặc blob, phần tử canvas và thẻ hình ảnh.
Trong tất cả các ví dụ dưới đây, chúng tôi giả sử chúng tôi đã có sẵn đối tượng
function toDataURL[src, callback, outputFormat] {
var img = new Image[];
img.crossOrigin = 'Anonymous';
img.onload = function[] {
var canvas = document.createElement['CANVAS'];
var ctx = canvas.getContext['2d'];
var dataURL;
canvas.height = this.naturalHeight;
canvas.width = this.naturalWidth;
ctx.drawImage[this, 0, 0];
dataURL = canvas.toDataURL[outputFormat];
callback[dataURL];
};
img.src = src;
if [img.complete || img.complete === undefined] {
img.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";
img.src = src;
}
}
toDataURL[
'//www.gravatar.com/avatar/d50c83cc0c6523b4d3f6085295c953e0',
function[dataUrl] {
console.log['RESULT:', dataUrl]
}
]
3, function toDataURL[src, callback, outputFormat] {
var img = new Image[];
img.crossOrigin = 'Anonymous';
img.onload = function[] {
var canvas = document.createElement['CANVAS'];
var ctx = canvas.getContext['2d'];
var dataURL;
canvas.height = this.naturalHeight;
canvas.width = this.naturalWidth;
ctx.drawImage[this, 0, 0];
dataURL = canvas.toDataURL[outputFormat];
callback[dataURL];
};
img.src = src;
if [img.complete || img.complete === undefined] {
img.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";
img.src = src;
}
}
toDataURL[
'//www.gravatar.com/avatar/d50c83cc0c6523b4d3f6085295c953e0',
function[dataUrl] {
console.log['RESULT:', dataUrl]
}
]
4, function toDataURL[src, callback, outputFormat] {
var img = new Image[];
img.crossOrigin = 'Anonymous';
img.onload = function[] {
var canvas = document.createElement['CANVAS'];
var ctx = canvas.getContext['2d'];
var dataURL;
canvas.height = this.naturalHeight;
canvas.width = this.naturalWidth;
ctx.drawImage[this, 0, 0];
dataURL = canvas.toDataURL[outputFormat];
callback[dataURL];
};
img.src = src;
if [img.complete || img.complete === undefined] {
img.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";
img.src = src;
}
}
toDataURL[
'//www.gravatar.com/avatar/d50c83cc0c6523b4d3f6085295c953e0',
function[dataUrl] {
console.log['RESULT:', dataUrl]
}
]
5 hoặc function toDataURL[src, callback, outputFormat] {
var img = new Image[];
img.crossOrigin = 'Anonymous';
img.onload = function[] {
var canvas = document.createElement['CANVAS'];
var ctx = canvas.getContext['2d'];
var dataURL;
canvas.height = this.naturalHeight;
canvas.width = this.naturalWidth;
ctx.drawImage[this, 0, 0];
dataURL = canvas.toDataURL[outputFormat];
callback[dataURL];
};
img.src = src;
if [img.complete || img.complete === undefined] {
img.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";
img.src = src;
}
}
toDataURL[
'//www.gravatar.com/avatar/d50c83cc0c6523b4d3f6085295c953e0',
function[dataUrl] {
console.log['RESULT:', dataUrl]
}
]
6.Chúng tôi sẽ chuyển đổi hình ảnh thành DataURL, chúng tôi có thể sử dụng chức năng bên dưới để chuyển đổi DataURL thành chuỗi Base64.
const getBase64StringFromDataURL = [dataURL] =>
dataURL.replace['data:', ''].replace[/^.+,/, ''];
Bắt đầu nào.
Hình ảnh là một đối tượng tệp hoặc blob
Khi hình ảnh là đối tượng
function toDataURL[src, callback, outputFormat] {
var img = new Image[];
img.crossOrigin = 'Anonymous';
img.onload = function[] {
var canvas = document.createElement['CANVAS'];
var ctx = canvas.getContext['2d'];
var dataURL;
canvas.height = this.naturalHeight;
canvas.width = this.naturalWidth;
ctx.drawImage[this, 0, 0];
dataURL = canvas.toDataURL[outputFormat];
callback[dataURL];
};
img.src = src;
if [img.complete || img.complete === undefined] {
img.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";
img.src = src;
}
}
toDataURL[
'//www.gravatar.com/avatar/d50c83cc0c6523b4d3f6085295c953e0',
function[dataUrl] {
console.log['RESULT:', dataUrl]
}
]
5 hoặc function toDataURL[src, callback, outputFormat] {
var img = new Image[];
img.crossOrigin = 'Anonymous';
img.onload = function[] {
var canvas = document.createElement['CANVAS'];
var ctx = canvas.getContext['2d'];
var dataURL;
canvas.height = this.naturalHeight;
canvas.width = this.naturalWidth;
ctx.drawImage[this, 0, 0];
dataURL = canvas.toDataURL[outputFormat];
callback[dataURL];
};
img.src = src;
if [img.complete || img.complete === undefined] {
img.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";
img.src = src;
}
}
toDataURL[
'//www.gravatar.com/avatar/d50c83cc0c6523b4d3f6085295c953e0',
function[dataUrl] {
console.log['RESULT:', dataUrl]
}
]
6, chúng ta có thể sử dụng API function toDataURL[src, callback, outputFormat] {
var img = new Image[];
img.crossOrigin = 'Anonymous';
img.onload = function[] {
var canvas = document.createElement['CANVAS'];
var ctx = canvas.getContext['2d'];
var dataURL;
canvas.height = this.naturalHeight;
canvas.width = this.naturalWidth;
ctx.drawImage[this, 0, 0];
dataURL = canvas.toDataURL[outputFormat];
callback[dataURL];
};
img.src = src;
if [img.complete || img.complete === undefined] {
img.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";
img.src = src;
}
}
toDataURL[
'//www.gravatar.com/avatar/d50c83cc0c6523b4d3f6085295c953e0',
function[dataUrl] {
console.log['RESULT:', dataUrl]
}
]
9 Vui lòng xem bài viết này về việc chuyển đổi tệp sang chuỗi Base64 hoặc DataURL.Chúng tôi cũng sẽ sử dụng API Filereader khi chuyển đổi thẻ hình ảnh thành chuỗi base64.
Hình ảnh là một phần tử canvas
Nếu chúng ta có
function toDataURL[src, callback, outputFormat] {
var img = new Image[];
img.crossOrigin = 'Anonymous';
img.onload = function[] {
var canvas = document.createElement['CANVAS'];
var ctx = canvas.getContext['2d'];
var dataURL;
canvas.height = this.naturalHeight;
canvas.width = this.naturalWidth;
ctx.drawImage[this, 0, 0];
dataURL = canvas.toDataURL[outputFormat];
callback[dataURL];
};
img.src = src;
if [img.complete || img.complete === undefined] {
img.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";
img.src = src;
}
}
toDataURL[
'//www.gravatar.com/avatar/d50c83cc0c6523b4d3f6085295c953e0',
function[dataUrl] {
console.log['RESULT:', dataUrl]
}
]
3 mà chúng ta muốn biến thành chuỗi base64, chúng ta có thể sử dụng function encodeImageFileAsURL[element] {
var file = element.files[0];
var reader = new FileReader[];
reader.onloadend = function[] {
console.log['RESULT', reader.result]
}
reader.readAsDataURL[file];
}
1 trên phần tử Canvas.
const canvas = document.getElementById['my-canvas'];
// Convert canvas to dataURL and log to console
const dataURL = canvas.toDataURL[];
console.log[dataURL];
// Logs data:image/png;base64,wL2dvYWwgbW9yZ...
// Convert to Base64 string
const base64 = getBase64StringFromDataURL[dataURL];
console.log[base64];
// Logs wL2dvYWwgbW9yZ...
Theo mặc định, Canvas xuất ra PNG không mất, chúng ta có thể chuyển
function encodeImageFileAsURL[element] {
var file = element.files[0];
var reader = new FileReader[];
reader.onloadend = function[] {
console.log['RESULT', reader.result]
}
reader.readAsDataURL[file];
}
2, function encodeImageFileAsURL[element] {
var file = element.files[0];
var reader = new FileReader[];
reader.onloadend = function[] {
console.log['RESULT', reader.result]
}
reader.readAsDataURL[file];
}
3 hoặc function encodeImageFileAsURL[element] {
var file = element.files[0];
var reader = new FileReader[];
reader.onloadend = function[] {
console.log['RESULT', reader.result]
}
reader.readAsDataURL[file];
}
4 cho phương thức function encodeImageFileAsURL[element] {
var file = element.files[0];
var reader = new FileReader[];
reader.onloadend = function[] {
console.log['RESULT', reader.result]
}
reader.readAsDataURL[file];
}
1 để có được một định dạng khác.Khi sử dụng
function encodeImageFileAsURL[element] {
var file = element.files[0];
var reader = new FileReader[];
reader.onloadend = function[] {
console.log['RESULT', reader.result]
}
reader.readAsDataURL[file];
}
3 hoặc function encodeImageFileAsURL[element] {
var file = element.files[0];
var reader = new FileReader[];
reader.onloadend = function[] {
console.log['RESULT', reader.result]
}
reader.readAsDataURL[file];
}
4, chúng ta có thể vượt qua nén hình ảnh làm đối số cuối cùng, function encodeImageFileAsURL[element] {
var file = element.files[0];
var reader = new FileReader[];
reader.onloadend = function[] {
console.log['RESULT', reader.result]
}
reader.readAsDataURL[file];
}
8 có nghĩa là rất nhiều nén, function encodeImageFileAsURL[element] {
var file = element.files[0];
var reader = new FileReader[];
reader.onloadend = function[] {
console.log['RESULT', reader.result]
}
reader.readAsDataURL[file];
}
9 có nghĩa là không nén.
const canvas = document.getElementById['my-canvas'];
// Convert canvas to dataURL and log to console
const dataURL = canvas.toDataURL['image/jpeg', 0.5];
console.log[dataURL];
// Logs data:image/jpeg;base64,wL2dvYWwgbW9yZ...
// Convert to Base64 string
const base64 = getBase64StringFromDataURL[dataURL];
console.log[base64];
// Logs wL2dvYWwgbW9yZ...
Hình ảnh là một phần tử IMG
Nếu hình ảnh của chúng tôi là một phần tử
function toDataURL[src, callback, outputFormat] {
var img = new Image[];
img.crossOrigin = 'Anonymous';
img.onload = function[] {
var canvas = document.createElement['CANVAS'];
var ctx = canvas.getContext['2d'];
var dataURL;
canvas.height = this.naturalHeight;
canvas.width = this.naturalWidth;
ctx.drawImage[this, 0, 0];
dataURL = canvas.toDataURL[outputFormat];
callback[dataURL];
};
img.src = src;
if [img.complete || img.complete === undefined] {
img.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";
img.src = src;
}
}
toDataURL[
'//www.gravatar.com/avatar/d50c83cc0c6523b4d3f6085295c953e0',
function[dataUrl] {
console.log['RESULT:', dataUrl]
}
]
4, chúng tôi có thể
1 hình ảnh SRC và chuyển đổi nó thành chuỗi base64.Ngoài ra, chúng ta có thể vẽ hình ảnh thành một khung vẽ và sau đó chuyển đổi khung vẽ thành một phần tử hình ảnh, điều này sẽ hữu ích nếu chúng ta đang tìm kiếm một định dạng hình ảnh cụ thể.
Nếu hình ảnh được đặt trên máy chủ từ xa, cấu hình CORS của máy chủ từ xa phải cho phép tập lệnh cục bộ của chúng tôi truy cập hình ảnh.
Tìm nạp nguồn hình ảnh
Lưu ý rằng loại MIME được trả về bởi máy chủ từ xa trong tiêu đề phản hồi
2 được phản ánh trong dataURL.Nếu loại MIME không chính xác, DataURL cũng sẽ không chính xác.
const image = document.getElementById['my-image'];
// Get the remote image as a Blob with the fetch API
fetch[image.src]
.then[[res] => res.blob[]]
.then[[blob] => {
// Read the Blob as DataURL using the FileReader API
const reader = new FileReader[];
reader.onloadend = [] => {
console.log[reader.result];
// Logs data:image/jpeg;base64,wL2dvYWwgbW9yZ...
// Convert to Base64 string
const base64 = getBase64StringFromDataURL[reader.result];
console.log[base64];
// Logs wL2dvYWwgbW9yZ...
};
reader.readAsDataURL[blob];
}];
Vẽ hình ảnh vào một tấm bạt
Vẽ hình ảnh thành một khung vẽ trước tiên cho phép chúng tôi chuyển đổi nó sang một định dạng khác.
Xin lưu ý rằng phương pháp này chậm hơn chỉ đơn giản là tìm nạp hình ảnh
3 như trong ví dụ trước.Một cảnh báo bổ sung là phần tử Canvas có kích thước tối đa, đối với một số trình duyệt, giới hạn kích thước này là vấn đề gây ra rất thấp khi chuyển đổi hình ảnh.
const image = document.getElementById['my-image'];
const toDataURL = [] => {
const canvas = document.createElement['canvas'];
// We use naturalWidth and naturalHeight to get the real image size vs the size at which the image is shown on the page
canvas.width = image.naturalWidth;
canvas.height = image.naturalHeight;
// We get the 2d drawing context and draw the image in the top left
canvas.getContext['2d'].drawImage[image, 0, 0];
// Convert canvas to DataURL and log to console
const dataURL = canvas.toDataURL[];
console.log[dataURL];
// logs data:image/png;base64,wL2dvYWwgbW9yZ...
// Convert to Base64 string
const base64 = getBase64StringFromDataURL[dataURL];
console.log[base64];
// Logs wL2dvYWwgbW9yZ...
};
// If the image has already loaded, let's go!
if [image.complete] toDataURL[image];
// Wait for the image to load before converting
else image.onload = toDataURL;
Gói lên
Chúng tôi đã chuyển đổi một
function toDataURL[src, callback, outputFormat] {
var img = new Image[];
img.crossOrigin = 'Anonymous';
img.onload = function[] {
var canvas = document.createElement['CANVAS'];
var ctx = canvas.getContext['2d'];
var dataURL;
canvas.height = this.naturalHeight;
canvas.width = this.naturalWidth;
ctx.drawImage[this, 0, 0];
dataURL = canvas.toDataURL[outputFormat];
callback[dataURL];
};
img.src = src;
if [img.complete || img.complete === undefined] {
img.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";
img.src = src;
}
}
toDataURL[
'//www.gravatar.com/avatar/d50c83cc0c6523b4d3f6085295c953e0',
function[dataUrl] {
console.log['RESULT:', dataUrl]
}
]
5, function toDataURL[src, callback, outputFormat] {
var img = new Image[];
img.crossOrigin = 'Anonymous';
img.onload = function[] {
var canvas = document.createElement['CANVAS'];
var ctx = canvas.getContext['2d'];
var dataURL;
canvas.height = this.naturalHeight;
canvas.width = this.naturalWidth;
ctx.drawImage[this, 0, 0];
dataURL = canvas.toDataURL[outputFormat];
callback[dataURL];
};
img.src = src;
if [img.complete || img.complete === undefined] {
img.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";
img.src = src;
}
}
toDataURL[
'//www.gravatar.com/avatar/d50c83cc0c6523b4d3f6085295c953e0',
function[dataUrl] {
console.log['RESULT:', dataUrl]
}
]
6, function toDataURL[src, callback, outputFormat] {
var img = new Image[];
img.crossOrigin = 'Anonymous';
img.onload = function[] {
var canvas = document.createElement['CANVAS'];
var ctx = canvas.getContext['2d'];
var dataURL;
canvas.height = this.naturalHeight;
canvas.width = this.naturalWidth;
ctx.drawImage[this, 0, 0];
dataURL = canvas.toDataURL[outputFormat];
callback[dataURL];
};
img.src = src;
if [img.complete || img.complete === undefined] {
img.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";
img.src = src;
}
}
toDataURL[
'//www.gravatar.com/avatar/d50c83cc0c6523b4d3f6085295c953e0',
function[dataUrl] {
console.log['RESULT:', dataUrl]
}
]
3 và function toDataURL[src, callback, outputFormat] {
var img = new Image[];
img.crossOrigin = 'Anonymous';
img.onload = function[] {
var canvas = document.createElement['CANVAS'];
var ctx = canvas.getContext['2d'];
var dataURL;
canvas.height = this.naturalHeight;
canvas.width = this.naturalWidth;
ctx.drawImage[this, 0, 0];
dataURL = canvas.toDataURL[outputFormat];
callback[dataURL];
};
img.src = src;
if [img.complete || img.complete === undefined] {
img.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";
img.src = src;
}
}
toDataURL[
'//www.gravatar.com/avatar/d50c83cc0c6523b4d3f6085295c953e0',
function[dataUrl] {
console.log['RESULT:', dataUrl]
}
]
4 thành dataURL và chúng tôi đã xem xét cách chuyển đổi dataURL thành chuỗi base64. Bằng cách xem xét các phương pháp khác nhau để chuyển đổi hình ảnh thành chuỗi Base64, giờ đây chúng ta biết những ưu và nhược điểm của từng phương pháp.