Chuyển đổi png thành chuỗi base64 python

Bạn đã bao giờ nhận được một tệp PDF hoặc tệp hình ảnh từ ai đó qua email, chỉ để xem các ký tự lạ khi bạn mở nó chưa? . Các tệp có dữ liệu nhị phân, byte đại diện cho thông tin không phải văn bản như hình ảnh, có thể dễ dàng bị hỏng khi được chuyển và xử lý sang hệ thống chỉ có văn bản

Mã hóa Base64 cho phép chúng tôi chuyển đổi byte chứa dữ liệu nhị phân hoặc văn bản thành ký tự ASCII. Bằng cách mã hóa dữ liệu của mình, chúng tôi cải thiện khả năng dữ liệu được các hệ thống khác nhau xử lý chính xác

Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách hoạt động của mã hóa và giải mã Base64 cũng như cách sử dụng nó. Sau đó, chúng tôi sẽ sử dụng Python để mã hóa Base64 và giải mã cả dữ liệu văn bản và dữ liệu nhị phân

Mã hóa Base64 là gì?

Mã hóa Base64 là một loại chuyển đổi byte thành ký tự ASCII. Trong toán học, cơ sở của một hệ thống số là có bao nhiêu ký tự khác nhau đại diện cho các số. Tên của mã hóa này xuất phát trực tiếp từ định nghĩa toán học của các cơ số - chúng tôi có 64 ký tự đại diện cho các số

Bộ ký tự Base64 chứa

  • 26 chữ hoa
  • 26 chữ thường
  • 10 số
  • 010100 000111 100101 110100 011010 000110 111101 101110
    
    1 và
    010100 000111 100101 110100 011010 000110 111101 101110
    
    2 cho các dòng mới [một số triển khai có thể sử dụng các ký tự khác nhau]

Khi máy tính chuyển đổi các ký tự Base64 thành nhị phân, mỗi ký tự Base64 đại diện cho 6 bit thông tin

Ghi chú. Đây không phải là thuật toán mã hóa và không được sử dụng cho mục đích bảo mật

Bây giờ chúng ta đã biết mã hóa Base64 là gì và nó được thể hiện như thế nào trên máy tính, hãy tìm hiểu sâu hơn về cách thức hoạt động của nó

Mã hóa Base64 hoạt động như thế nào?

Chúng tôi sẽ minh họa cách mã hóa Base64 hoạt động bằng cách chuyển đổi dữ liệu văn bản, vì nó tiêu chuẩn hơn các định dạng nhị phân khác nhau để lựa chọn. Nếu chúng tôi mã hóa Base64 một chuỗi, chúng tôi sẽ làm theo các bước sau

  1. Lấy giá trị ASCII của từng ký tự trong chuỗi
  2. Tính tương đương nhị phân 8 bit của các giá trị ASCII
  3. Chuyển đổi các khối 8 bit thành các khối 6 bit bằng cách nhóm lại các chữ số
  4. Chuyển đổi các nhóm nhị phân 6 bit thành giá trị thập phân tương ứng của chúng
  5. Sử dụng bảng mã hóa base64, gán ký tự base64 tương ứng cho từng giá trị thập phân

Hãy xem cách nó hoạt động bằng cách chuyển đổi chuỗi "Python" thành chuỗi Base64

Các giá trị ASCII của các ký tự

010100 000111 100101 110100 011010 000110 111101 101110
3 lần lượt là
010100 000111 100101 110100 011010 000110 111101 101110
4. Chúng ta có thể biểu diễn các giá trị ASCII này ở dạng nhị phân 8 bit như sau

01010000 01111001 01110100 01101000 01101111 01101110

Nhớ lại rằng các ký tự Base64 chỉ đại diện cho 6 bit dữ liệu. Bây giờ chúng tôi nhóm lại các chuỗi nhị phân 8 bit thành các khối 6 bit. Nhị phân kết quả sẽ trông như thế này

010100 000111 100101 110100 011010 000110 111101 101110

Ghi chú. Đôi khi chúng tôi không thể nhóm dữ liệu thành các chuỗi 6 bit. Nếu điều đó xảy ra, chúng ta phải đệm trình tự

Với dữ liệu của chúng tôi trong các nhóm 6 bit, chúng tôi có thể lấy giá trị thập phân cho mỗi nhóm. Sử dụng kết quả cuối cùng của chúng tôi, chúng tôi nhận được các giá trị thập phân sau

20 7 37 52 26 6 61 46

Cuối cùng, chúng tôi sẽ chuyển đổi các số thập phân này thành ký tự Base64 thích hợp bằng cách sử dụng bảng chuyển đổi Base64

Như bạn có thể thấy, giá trị

010100 000111 100101 110100 011010 000110 111101 101110
5 tương ứng với chữ cái
010100 000111 100101 110100 011010 000110 111101 101110
6. Sau đó, chúng tôi nhìn vào
010100 000111 100101 110100 011010 000110 111101 101110
7 và quan sát nó được ánh xạ tới
010100 000111 100101 110100 011010 000110 111101 101110
8. Tiếp tục tra cứu này cho tất cả các giá trị thập phân, chúng tôi có thể xác định rằng "Python" được biểu thị dưới dạng
010100 000111 100101 110100 011010 000110 111101 101110
9 khi mã hóa Base64. Bạn có thể xác minh kết quả này bằng công cụ chuyển đổi trực tuyến

Để mã hóa Base64 một chuỗi, chúng tôi chuyển đổi nó thành chuỗi nhị phân, sau đó thành chuỗi thập phân và cuối cùng, sử dụng bảng tra cứu để lấy chuỗi ký tự ASCII. Với sự hiểu biết sâu sắc hơn về cách thức hoạt động của nó, hãy xem tại sao chúng tôi mã hóa Base64 cho dữ liệu của mình

Tại sao nên sử dụng Mã hóa Base64?

Trong máy tính, tất cả dữ liệu thuộc các loại khác nhau được truyền dưới dạng 1 và 0. Tuy nhiên, một số kênh giao tiếp và ứng dụng không thể hiểu tất cả các bit mà nó nhận được. Điều này là do ý nghĩa của chuỗi các số 1 và 0 phụ thuộc vào loại dữ liệu mà nó đại diện. Ví dụ:

20 7 37 52 26 6 61 46
0 phải được xử lý theo cách khác nếu nó đại diện cho một chữ cái hoặc hình ảnh

Để khắc phục giới hạn này, bạn có thể mã hóa dữ liệu của mình thành văn bản, cải thiện khả năng dữ liệu được truyền và xử lý chính xác. Base64 là một phương pháp phổ biến để lấy dữ liệu nhị phân thành các ký tự ASCII, được đa số các mạng và ứng dụng hiểu rộng rãi

Một tình huống phổ biến trong thế giới thực nơi mã hóa Base64 được sử dụng nhiều là trong các máy chủ thư. Ban đầu chúng được xây dựng để xử lý dữ liệu văn bản, nhưng chúng tôi cũng mong muốn chúng gửi hình ảnh và phương tiện khác cùng với tin nhắn. Trong những trường hợp đó, dữ liệu phương tiện của bạn sẽ được mã hóa Base64 khi nó được gửi. Sau đó, nó sẽ được giải mã Base64 khi nhận được để ứng dụng có thể sử dụng nó. Vì vậy, ví dụ, hình ảnh trong HTML có thể trông như thế này


Hiểu rằng dữ liệu đôi khi cần được gửi dưới dạng văn bản để dữ liệu không bị hỏng, hãy xem cách chúng ta có thể sử dụng Python để mã hóa và giải mã dữ liệu Base64

Mã hóa chuỗi bằng Python

Python 3 cung cấp một mô-đun

20 7 37 52 26 6 61 46
1 cho phép chúng ta dễ dàng mã hóa và giải mã thông tin. Trước tiên, chúng tôi chuyển đổi chuỗi thành một đối tượng giống như byte. Sau khi chuyển đổi, chúng ta có thể sử dụng mô-đun
20 7 37 52 26 6 61 46
1 để mã hóa nó

Trong một tệp mới

20 7 37 52 26 6 61 46
3, hãy nhập thông tin sau

import base64

message = "Python is fun"
message_bytes = message.encode['ascii']
base64_bytes = base64.b64encode[message_bytes]
base64_message = base64_bytes.decode['ascii']

print[base64_message]

Hãy xem hướng dẫn thực hành, thực tế của chúng tôi để học Git, với các phương pháp hay nhất, tiêu chuẩn được ngành chấp nhận và bao gồm bảng gian lận. Dừng các lệnh Git trên Google và thực sự tìm hiểu nó

Trong đoạn mã trên, trước tiên chúng tôi đã nhập mô-đun

20 7 37 52 26 6 61 46
1. Biến
20 7 37 52 26 6 61 46
5 lưu trữ chuỗi đầu vào của chúng ta sẽ được mã hóa. Chúng tôi chuyển đổi nó thành một đối tượng giống như byte bằng cách sử dụng phương thức
20 7 37 52 26 6 61 46
6 của chuỗi và lưu trữ nó trong
20 7 37 52 26 6 61 46
7. Sau đó, chúng tôi mã hóa Base64
20 7 37 52 26 6 61 46
7 và lưu kết quả vào
20 7 37 52 26 6 61 46
9 bằng cách sử dụng phương thức

0. Cuối cùng, chúng tôi nhận được biểu diễn chuỗi của chuyển đổi Base64 bằng cách giải mã
20 7 37 52 26 6 61 46
9 dưới dạng ASCII

Ghi chú. Đảm bảo sử dụng cùng một định dạng mã hóa khi chuyển đổi từ chuỗi thành byte và từ byte thành chuỗi. Điều này ngăn ngừa tham nhũng dữ liệu

Chạy tệp này sẽ cung cấp đầu ra sau

$ python3 encoding_text.py
UHl0aG9uIGlzIGZ1bg==

Bây giờ hãy xem cách chúng ta có thể giải mã chuỗi Base64 thành biểu diễn thô của nó

Giải mã chuỗi bằng Python

Giải mã chuỗi Base64 về cơ bản là đảo ngược quá trình mã hóa. Chúng tôi giải mã chuỗi Base64 thành byte dữ liệu chưa được mã hóa. Sau đó, chúng tôi chuyển đổi đối tượng giống như byte thành một chuỗi

Trong một tệp mới có tên là


2, hãy viết đoạn mã sau

import base64

base64_message = 'UHl0aG9uIGlzIGZ1bg=='
base64_bytes = base64_message.encode['ascii']
message_bytes = base64.b64decode[base64_bytes]
message = message_bytes.decode['ascii']

print[message]

Một lần nữa, chúng ta cần nhập mô-đun

20 7 37 52 26 6 61 46
1. Sau đó, chúng tôi mã hóa tin nhắn của mình thành một đối tượng giống như byte với

4. Chúng tôi tiếp tục bằng cách gọi phương thức

5 để giải mã
20 7 37 52 26 6 61 46
9 thành biến
20 7 37 52 26 6 61 46
7 của chúng tôi. Cuối cùng, chúng tôi giải mã
20 7 37 52 26 6 61 46
7 thành một đối tượng chuỗi
20 7 37 52 26 6 61 46
5, để con người có thể đọc được

Chạy tệp này để xem đầu ra sau

$ python3 decoding_text.py
Python is fun

Bây giờ chúng ta có thể mã hóa và giải mã dữ liệu chuỗi, hãy thử mã hóa dữ liệu nhị phân

Mã hóa dữ liệu nhị phân bằng Python

Như chúng tôi đã đề cập trước đây, mã hóa Base64 chủ yếu được sử dụng để biểu thị dữ liệu nhị phân dưới dạng văn bản. Trong Python, chúng tôi cần đọc tệp nhị phân và Base64 mã hóa các byte của nó để chúng tôi có thể tạo chuỗi được mã hóa của nó

Hãy xem cách chúng ta có thể mã hóa hình ảnh này

Tạo một tệp mới

import base64

message = "Python is fun"
message_bytes = message.encode['ascii']
base64_bytes = base64.b64encode[message_bytes]
base64_message = base64_bytes.decode['ascii']

print[base64_message]
0 và thêm vào như sau

import base64

with open['logo.png', 'rb'] as binary_file:
    binary_file_data = binary_file.read[]
    base64_encoded_data = base64.b64encode[binary_file_data]
    base64_message = base64_encoded_data.decode['utf-8']

    print[base64_message]

Hãy xem lại đoạn mã trên. Chúng tôi mở tệp bằng cách sử dụng

import base64

message = "Python is fun"
message_bytes = message.encode['ascii']
base64_bytes = base64.b64encode[message_bytes]
base64_message = base64_bytes.decode['ascii']

print[base64_message]
1. Lưu ý cách chúng tôi chuyển đối số
import base64

message = "Python is fun"
message_bytes = message.encode['ascii']
base64_bytes = base64.b64encode[message_bytes]
base64_message = base64_bytes.decode['ascii']

print[base64_message]
2 cùng với đường dẫn tệp - điều này cho Python biết rằng chúng tôi đang đọc một tệp nhị phân. Nếu không sử dụng
import base64

message = "Python is fun"
message_bytes = message.encode['ascii']
base64_bytes = base64.b64encode[message_bytes]
base64_message = base64_bytes.decode['ascii']

print[base64_message]
2, Python sẽ cho rằng chúng ta đang đọc một tệp văn bản

Sau đó, chúng tôi sử dụng phương pháp

import base64

message = "Python is fun"
message_bytes = message.encode['ascii']
base64_bytes = base64.b64encode[message_bytes]
base64_message = base64_bytes.decode['ascii']

print[base64_message]
4 để lấy tất cả dữ liệu trong tệp vào biến
import base64

message = "Python is fun"
message_bytes = message.encode['ascii']
base64_bytes = base64.b64encode[message_bytes]
base64_message = base64_bytes.decode['ascii']

print[base64_message]
5. Tương tự như cách chúng tôi xử lý các chuỗi, chúng tôi Base64 đã mã hóa các byte bằng

0 và sau đó sử dụng
import base64

message = "Python is fun"
message_bytes = message.encode['ascii']
base64_bytes = base64.b64encode[message_bytes]
base64_message = base64_bytes.decode['ascii']

print[base64_message]
7 trên
import base64

message = "Python is fun"
message_bytes = message.encode['ascii']
base64_bytes = base64.b64encode[message_bytes]
base64_message = base64_bytes.decode['ascii']

print[base64_message]
8 để lấy dữ liệu được mã hóa Base64 bằng các ký tự mà con người có thể đọc được

Thực thi mã sẽ tạo ra đầu ra tương tự như

$ python3 encoding_binary.py
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB1klEQVQ4jY2TTUhUURTHf+fy/HrjhNEX2KRGiyIXg8xgSURuokXLxFW0qDTaSQupkHirthK0qF0WQQQR0UCbwCQyw8KCiDbShEYLJQdmpsk3895p4aSv92ass7pcfv/zP+fcc4U6kXKe2pTY3tjSUHjtnFgB0VqchC/SY8/293S23f+6VEj9KKwCoPDNIJdmr598GOZNJKNWTic7tqb27WwNuuwGvVWrAit84fsmMzE1P1+1TiKMVKvYUjdBvzPZXCwXzyhyWNBgVYkgrIow09VJMznpyebWE+Tdn9cEroBSc1JVPS+6moh5Xyjj65vEgBxafGzWetTh+rr1eE/c/TMYg8hlAOvI6JP4KmwLgJ4qD0TIbliTB+sunjkbeLekKsZ6Zc8V027aBRoBRHVoduDiSypmGFG7CrcBEyDHA0ZNfNphC0D6amYa6ANw3YbWD4Pn3oIc+EdL36V3od0A+MaMAXmA8x2Zyn+IQeQeBDfRcUw3B+2PxwZ/EdtTDpCPQLMh9TKx0k3pXipEVlknsf5KoNzGyOe1sz8nvYtTQT6yyvTjIaxsmHGB9pFx4n3jIEfDePQvCIrnn0J4B/gA5J4XcRfu4JZuRAw3C51OtOjM3l2bMb8Br5eXCsT/w/EAAAAASUVORK5CYII=

Đầu ra của bạn có thể khác nhau tùy thuộc vào hình ảnh bạn đã chọn để mã hóa

Bây giờ chúng ta đã biết cách mã hóa dữ liệu nhị phân Bas64 trong Python, hãy chuyển sang phần giải mã dữ liệu nhị phân Base64

Giải mã dữ liệu nhị phân với Python

Mã nhị phân giải mã Base64 tương tự như dữ liệu văn bản giải mã Base64. Sự khác biệt chính là sau khi chúng tôi giải mã chuỗi Base64, chúng tôi lưu dữ liệu dưới dạng tệp nhị phân thay vì chuỗi

Hãy xem cách giải mã dữ liệu nhị phân Base64 trong thực tế bằng cách tạo một tệp mới có tên là

import base64

message = "Python is fun"
message_bytes = message.encode['ascii']
base64_bytes = base64.b64encode[message_bytes]
base64_message = base64_bytes.decode['ascii']

print[base64_message]
9. Nhập mã sau vào tệp Python

010100 000111 100101 110100 011010 000110 111101 101110
0

Trong đoạn mã trên, trước tiên chúng tôi chuyển đổi dữ liệu chuỗi Base64 của mình thành một đối tượng giống như byte có thể được giải mã. Khi bạn giải mã tệp nhị phân base64, bạn phải biết loại dữ liệu đang được giải mã. Ví dụ: dữ liệu này chỉ hợp lệ dưới dạng tệp PNG chứ không phải tệp MP3 vì nó mã hóa hình ảnh

Sau khi tệp đích được mở, chúng tôi Base64 giải mã dữ liệu bằng

$ python3 encoding_text.py
UHl0aG9uIGlzIGZ1bg==
0, một phương pháp khác với phương pháp

5 đã được sử dụng với các chuỗi. Phương pháp này nên được sử dụng để giải mã dữ liệu nhị phân. Cuối cùng, chúng tôi ghi dữ liệu đã giải mã vào một tệp

Trong cùng một thư mục mà bạn đã thực thi

import base64

message = "Python is fun"
message_bytes = message.encode['ascii']
base64_bytes = base64.b64encode[message_bytes]
base64_message = base64_bytes.decode['ascii']

print[base64_message]
9, bây giờ bạn sẽ thấy một tệp
$ python3 encoding_text.py
UHl0aG9uIGlzIGZ1bg==
3 mới chứa hình ảnh gốc đã được mã hóa trước đó

Phần kết luận

Mã hóa Base64 là một kỹ thuật phổ biến để chuyển đổi dữ liệu ở các định dạng nhị phân khác nhau thành một chuỗi ký tự ASCII. Điều này hữu ích khi truyền dữ liệu đến mạng hoặc ứng dụng không thể xử lý dữ liệu nhị phân thô nhưng sẽ dễ dàng xử lý văn bản

Làm cách nào để chuyển đổi png sang base64 Python?

Chuyển đổi hình ảnh thành chuỗi base64 trong Python .
Mở một tệp hình ảnh
đọc dữ liệu hình ảnh
mã hóa nó trong base64 bằng mô-đun base64 trong Python
In chuỗi

Làm cách nào để chuyển đổi hình ảnh thành chuỗi base64 trong Python?

Chuyển hình ảnh thành chuỗi .
Ở đây, trước tiên, chúng tôi nhập phương thức “Base64“ để mã hóa hình ảnh đã cho
Tiếp theo, chúng tôi đã mở tệp hình ảnh của mình ở chế độ rb được đọc ở chế độ nhị phân
Chúng tôi đọc hình ảnh của chúng tôi với hình ảnh2. read[] Đọc hình ảnh và mã hóa nó bằng cách sử dụng b64encode[] Đây là phương pháp được sử dụng để mã hóa dữ liệu vào Base64

Làm cách nào để chuyển đổi hình ảnh png thành base64?

Để chuyển đổi PNG sang dữ liệu base64. .
Nhấp vào "Chọn tệp" và tải lên hình ảnh PNG từ hệ thống của bạn
Nhấp vào nút "Chuyển đổi" để chuyển đổi hình ảnh PNG thành dữ liệu cơ sở 64
Bạn có thể "Tải xuống hoặc Sao chép" mã cơ sở 64 để sử dụng tiếp

Làm cách nào để chuyển đổi hình ảnh thành chuỗi 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!

Chủ Đề