Htmlimageelement thành base64

Vài ngày trước, tôi đang tìm cách nhanh chóng đặt một hình ảnh dưới dạng một chuỗi để gửi nó trong một tin nhắn. Tôi nhớ rằng có thể sử dụng base64 cho việc đó nhưng tôi không nhớ chính xác quy trình

Tôi đã phải lấy các bit từ các câu trả lời stackoverflow khác nhau để nó hoạt động. Tôi quyết định viết bài này để giúp bạn tiết kiệm một vài phút

function imgToBase64[img] {
  const canvas = document.createElement['canvas'];
  const ctx = canvas.getContext['2d'];
  canvas.width = img.width;
  canvas.height = img.height;

  // I think this won't work inside the function from the console
  img.crossOrigin = 'anonymous';

  ctx.drawImage[img, 0, 0];

  return canvas.toDataURL[];
}

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Hãy thử nó

  1. Đây là một bức ảnh tuyệt đẹp về Xochimilco, ở Mexico City, Mexico được chụp bởi Jeremy Lishner trên Bapt. Bạn có thể theo liên kết, nếu bạn muốn, nhưng tôi đã bao gồm hình ảnh để bạn không phải rời khỏi trang này

  1. Mở bảng điều khiển [Ctrl + Shift + I]
  2. Dán mã. Chúng tôi sẽ có sẵn imgToBase64 dưới dạng một chức năng
  3. Nhấp vào biểu tượng chọn ở trên cùng bên trái [Ctrl + Shift + C] và chọn hình ảnh. Bây giờ bạn sẽ có một tham chiếu đến DOMElement với
    btoa[stringToEncode]
    
    0
  4. Loại
    btoa[stringToEncode]
    
    1. Bây giờ bạn đã có chuỗi hình ảnh trong khay nhớ tạm, sẵn sàng dán vào nơi khác

Đôi khi bạn gặp lỗi

btoa[stringToEncode]
2, lỗi này liên quan đến thuộc tính
btoa[stringToEncode]
3, bạn có thể thay đổi giá trị thành
btoa[stringToEncode]
4 ẩn danh theo cách thủ công và lặp lại bước 4

Phương thức

btoa[stringToEncode]
5 tạo một chuỗi ASCII được mã hóa Base64 từ một chuỗi nhị phân [i. e. , một chuỗi trong đó mỗi ký tự trong chuỗi được coi là một byte dữ liệu nhị phân]

Bạn có thể sử dụng phương pháp này để mã hóa dữ liệu có thể gây ra sự cố giao tiếp, hãy truyền nó, sau đó sử dụng phương pháp

btoa[stringToEncode]
6 để giải mã lại dữ liệu. Ví dụ: bạn có thể mã hóa các ký tự điều khiển chẳng hạn như các giá trị ASCII từ 0 đến 31

btoa[stringToEncode]

btoa[stringToEncode]
7

Chuỗi nhị phân để mã hóa

Một chuỗi ASCII chứa biểu diễn Base64 của

btoa[stringToEncode]
7

btoa[stringToEncode]
9
const encodedData = btoa["Hello, world"]; // encode a string
const decodedData = atob[encodedData]; // decode the string
0

Chuỗi chứa một ký tự không vừa trong một byte. Xem "Chuỗi Unicode" bên dưới để biết thêm chi tiết

const encodedData = btoa["Hello, world"]; // encode a string
const decodedData = atob[encodedData]; // decode the string

Hàm

btoa[stringToEncode]
5 lấy một chuỗi JavaScript làm tham số. Trong các chuỗi JavaScript được biểu diễn bằng mã hóa ký tự UTF-16. trong cách mã hóa này, các chuỗi được biểu diễn dưới dạng một chuỗi các đơn vị 16 bit [2 byte]. Mỗi ký tự ASCII phù hợp với byte đầu tiên của một trong các đơn vị này, nhưng nhiều ký tự khác thì không

Base64, theo thiết kế, mong đợi dữ liệu nhị phân làm đầu vào của nó. Về chuỗi JavaScript, điều này có nghĩa là các chuỗi trong đó mỗi ký tự chỉ chiếm một byte. Vì vậy, nếu bạn chuyển một chuỗi vào

btoa[stringToEncode]
5 chứa các ký tự chiếm nhiều hơn một byte, bạn sẽ gặp lỗi vì đây không được coi là dữ liệu nhị phân

const ok = "a";
console.log[ok.codePointAt[0].toString[16]]; //   61: occupies < 1 byte

const notOK = "✓";
console.log[notOK.codePointAt[0].toString[16]]; // 2713: occupies > 1 byte

console.log[btoa[ok]]; // YQ==
console.log[btoa[notOK]]; // error

Nếu bạn cần mã hóa văn bản Unicode dưới dạng ASCII bằng cách sử dụng

btoa[stringToEncode]
5, một tùy chọn là chuyển đổi chuỗi sao cho mỗi đơn vị 16 bit chỉ chiếm một byte. Ví dụ

// convert a Unicode string to a string in which
// each 16-bit unit occupies only one byte
function toBinary[string] {
  const codeUnits = Uint16Array.from[
    { length: string.length },
    [element, index] => string.charCodeAt[index]
  ];
  const charCodes = new Uint8Array[codeUnits.buffer];

  let result = "";
  charCodes.forEach[[char] => {
    result += String.fromCharCode[char];
  }];
  return result;
}

// a string that contains characters occupying > 1 byte
const myString = "☸☹☺☻☼☾☿";

const converted = toBinary[myString];
const encoded = btoa[converted];
console.log[encoded]; // OCY5JjomOyY8Jj4mPyY=

Nếu bạn làm điều này, tất nhiên bạn sẽ phải đảo ngược chuyển đổi trên chuỗi đã giải mã

function fromBinary[binary] {
  const bytes = Uint8Array.from[{ length: binary.length }, [element, index] =>
    binary.charCodeAt[index]
  ];
  const charCodes = new Uint16Array[bytes.buffer];

  let result = "";
  charCodes.forEach[[char] => {
    result += String.fromCharCode[char];
  }];
  return result;
}

const decoded = atob[encoded];
const original = fromBinary[decoded];
console.log[original]; // ☸☹☺☻☼☾☿

Xem thêm ví dụ về hàm

const encodedData = btoa["Hello, world"]; // encode a string
const decodedData = atob[encodedData]; // decode the string
4 và
const encodedData = btoa["Hello, world"]; // encode a string
const decodedData = atob[encodedData]; // decode the string
5 trong mục thuật ngữ Base64

Làm cách nào để chuyển đổi HTML sang Base64?

Cách chuyển đổi HTML sang Base64 .
Nhập hoặc dán HTML của bạn vào trường “HTML”
Nếu cần, hãy chọn định dạng đầu ra mong muốn
Nhấn nút “Mã hóa HTML thành Base64”
Tải xuống hoặc sao chép kết quả từ trường “Base64”

Làm cách nào để chuyển đổi hình ảnh sang Base64?

Chuyển đổi hình ảnh sang Base64 . Nhấn một nút - nhận base64. Không có quảng cáo, vô nghĩa hoặc rác. Kéo và thả hình ảnh của bạn vào đây. select your JPG, PNG, GIF, Webp, or BMP picture or drag & drop it in the form below, press the Convert to Base64 button, and you'll get a base-64 string of the image. Press a button – get base64. No ads, nonsense, or garbage. Drag and drop your image here!

Làm cách nào để lấy dữ liệu Base64 từ hình ảnh?

Cách chuyển đổi hình ảnh sang Base64 trực tuyến .
Chọn nguồn hình ảnh từ trường “Datatype”
Dán URL hoặc chọn một hình ảnh từ máy tính của bạn
Nếu cần, hãy chọn định dạng đầu ra mong muốn
Nhấn nút “Mã hóa hình ảnh thành Base64”
Tải xuống hoặc sao chép kết quả từ trường “Base64”

Làm cách nào để sử dụng hình ảnh làm Base64 trong HTML?

Để hiển thị hình ảnh được mã hóa bằng Base64, bạn cần phải lấy chuỗi mã hóa base64 và sử dụng phần tử img . Điều này ngăn trang tải chậm và lưu trình duyệt web khỏi các yêu cầu HTTP bổ sung. Phần 1 là hình ảnh được mã hóa Base64. Phần thứ 2 là chuỗi mã hóa Base64 của hình ảnh.

Chủ Đề