Trong Python3, base64.b64encode
trả về một ví dụ bytes
, vì vậy cần phải gọi decode
để có được str
, nếu bạn đang làm việc với văn bản Unicode.
# Image data from [Wikipedia][1]
>>>image_data = b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x05\x00\x00\x00\x05\x08\x06\x00\x00\x00\x8do&\xe5\x00\x00\x00\x1cIDAT\x08\xd7c\xf8\xff\xff?\xc3\x7f\x06 \x05\xc3 \x12\x84\xd01\xf1\x82X\xcd\x04\x00\x0e\xf55\xcb\xd1\x8e\x0e\x1f\x00\x00\x00\x00IEND\xaeB`\x82'
# String representation of bytes object includes leading "b" and quotes,
# making the uri invalid.
>>> encoded = base64.b64encode[image_data] # Creates a bytes object
>>> 'data:image/png;base64,{}'.format[encoded]
"data:image/png;base64,b'iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=='"
# Calling .decode[] gets us the right representation
>>> encoded = base64.b64encode[image_data].decode['ascii']
>>> 'data:image/png;base64,{}'.format[encoded]
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=='
Nếu bạn đang làm việc trực tiếp với bytes
, bạn có thể sử dụng đầu ra của base64.b64encode
mà không cần giải mã thêm.
>>> encoded = base64.b64encode[image_data]
>>> b'data:image/png;base64,' + encoded
b'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=='
Base64 Mã hóa cho phép chúng tôi chuyển đổi các byte chứa dữ liệu nhị phân hoặc văn bản thành các ký tự ASCII. Bằng cách mã hóa dữ liệu, chúng tôi cải thiện cơ hội được xử lý chính xác bởi các hệ thống khác nhau. Thật không may, một số hệ thống don lồng hiểu dữ liệu ở định dạng byte, vì vậy chúng tôi phải chuyển đổi dữ liệu.
Mục đích của phương thức Base64.b64encode [] trong Python là chuyển đổi dữ liệu nhị phân thành văn bản ASCII-SAFE. Nhưng Python rất không đồng ý với điều đó. Python bây giờ rất nghiêm ngặt về điều này mà phương thức byte.encode [] thậm chí không tồn tại, và vì vậy ‘xyz hè.encode [‘ base64,] sẽ nâng cao một thuộc tính.text”. But Python strongly disagrees with that. Python is now very strict about this that bytes.encode[] method doesn’t even exist, and so ‘xyz’.encode[‘base64’] would raise an AttributeError.
Bây giờ, hãy để hiểu về mã hóa Base64.
Base64 mã hóa là gì?
Mã hóa Base64 là loại chuyển đổi byte thành các ký tự ASCII. Ví dụ, trong toán học, cơ sở của một hệ thống số cho biết có bao nhiêu ký tự khác nhau biểu thị số.
Tên của mã hóa Base64 xuất phát trực tiếp từ mộ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 các phần sau.
- 26 chữ hoa
- 26 chữ cái chữ thường
- 10 số
- + và / cho các dòng mới
Khi một 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.
Để chuyển đổi hình ảnh thành Base64String trong Python, hãy sử dụng mô -đun Python Base64 cung cấp phương thức B64encode []. Chức năng python base64.b64encode [] mã hóa một chuỗi bằng base64 và trả về chuỗi đó.convert the Image to Base64 String in Python, use the Python base64 module that provides b64encode[] method. Python base64.b64encode[] function encodes a string using Base64 and returns that string.
Cú pháp
base64.b64encode[s[, altchars]]
Thông số
Hàm lấy s làm đầu vào và là tham số cần thiết.s as an input and is the required parameter.
Các altchars tùy chọn phải là một chuỗi ít nhất độ dài 2 [các ký tự bổ sung bị bỏ qua], trong đó xác định bảng chữ cái thay thế cho + và / ký tự.altchars must be a string of at least length 2 [additional characters are ignored], which defines the alternative alphabet for the + and / characters.
Điều này cho phép một ứng dụng, ví dụ, tạo URL hoặc hệ thống tập tin Safe Base64 chuỗi. Mặc định là không có, trong đó bảng chữ cái Base64 tiêu chuẩn được sử dụng.None, for which a standard Base64 alphabet is used.
Giá trị trả về
Hàm b64encode [] trả về chuỗi được mã hóa.
Ví dụ về chuyển đổi hình ảnh thành base64 trong Python
import base64 with open["grayimage.png", "rb"] as img_file: b64_string = base64.b64encode[img_file.read[]] print[b64_string]
Trong thư mục dự án của tôi, tôi có một hình ảnh gọi là & nbsp; grayimage.png. & Nbsp; vui lòng đảm bảo rằng đường dẫn hình ảnh của bạn là chính xác.grayimage.png. Please make sure that your image path is correct.
Trong ví dụ này, trước tiên chúng tôi đã mở tệp ở chế độ RB RB. Sau đó, chúng tôi đọc tệp hình ảnh.rb’ mode. Then we read the image file.
Python với hàm Open [] mở một tệp, và sau đó chúng ta có thể thực hiện bất kỳ hoạt động nào chúng ta muốn. Nó tự động đóng tệp khi chúng tôi thắng được cần nó nữa.
Sau đó mã hóa nó bằng phương thức B64encode []. Bạn phải đọc một tệp hình ảnh trước khi bạn mã hóa nó.You must read an image file before you encode it.
Tôi đang nhận được chuỗi dài trong đầu ra trong thiết bị đầu cuối, như sau.
xrfaP11Zcs/PROUWCp7bOF7TZsPuAxAvWmY0EkyUZ+IF49r3aOEYbllIVB7mWkgXr88st9aZVx5+5jE+ihdEZZFSaVUmJZhGNmVQzOxX7mrT//r2OHpHoQEO+G55O0Hv+kfpBajTeivkc/WbnmWbY6n3T/zZ9TNwTzABCh5vgjOBdpHR4ygIiFXn+s3AHjobVWNQ5BHKVPFwOdFUoozxugdQNpc+CJTX2Vih83Z7xT3FEYNPpMMh/1ff0Ygx350gyQmqaBwfRCPzWcGHlMTDsYx3O2qwx9KNj8dHzcOCM9eGNMYJMDXVZ1veCs2TNawDhiVeUT04hoktMLlgnEK9n1oBMsGfdHK5rQ013Xn7Tjr7xOiv+EHHl2Mhy78TjVRliEQNR3lCxXiAw99GKqVwLW4VUzNWs7EVklYilBVaibIT519HHn1Da9NwpDEJj3YtS7QlqLtcHOLKH9OSgzN5yym/OP5TcR667/Hub1V/H89Rry0LVMN7yXFg+7kUid8u1ohpBD7cfa4UPbLYCGZRJS+dS6Xz4+//ap6f+mP53Pa1lUp/58GQH2dIKQ0aHTYDy+LA71dxBi/+yFOVQ76AIHqckWXrgP214WqvJVcxTB4MDKdT2khKF+v5IU9xja0HDTNye/sQ5xvn79XxvtLlCR88lzfDwi6iZj6I+bAkX7DdCznwJ/YH7Evq/b2FtcdXiUVWj10MP4zQO36+QlKc7giHVKfFhypPnyePuLDocQ9o+4bmakPoCFbbz0MT4t7Cg0AkdD29ReLFvgt6kJx34zDUxTMQuRNReLDyM4rbfYsmi7VnCZHLCHuBo0GPcWpp8TlV+9dzt0/503E75OPBtMw8fmSTnAhB/+mXbJV7sq4pRoiBUwQ+deHLveogF4KMDWKPhS3lLPSc2bJxZmn4+gG98yL0eMd9FVU7DZaWM5ASv5tifdfP/2opstI1N8PsSdQYFXc+o/wIB7Eemf89oBmy0eZLx07Wx3tV31Do7vCXTPWfq5KoeBEj96+ae9NGrnnn3bhE3+/r+mykBKrcDYBpMY4eFQDzvKT7tF5QZF02CDacTc5lHqk23K40fH6dK7HnQ+hWw8X/4/RiMehs7bRiTnZ/sfeRHMiB+XXnBIv/Izftgq0urkSsnX829z5Ekzcf6lUyP32TcyTg38BLqTsL/d/FtLw5IRMadrrYr99/p2Gs6rbGrGT/ikQnOhVNnLimbbxVLeFS8tdmjVOE0wcmkOvu5nF3/apPPxXgEapMdnaqiKGbilvzadZFg503N+Pjyf/UNvhu7oXayGXKPg/F/zbZ6b0Oelqt2f/bgOULOh4mSezS55a4pPLYdFCYi0sLtb3nwukE6J20uCqAfvretNh0+xyFpHt6j/+waFfxcDxzR1s4vY1DdGTn/GVld9rr2Udrf6pN4He6cMWQsw2Ow9fwzl6Og/tk7ZxVa/+h/+9z++2j73iJyXQ+ac+nJy7tinATA6yXOP9RTl8rJbTI/p69m3lsjWkqaTAXj49XV3zil73n4Y4pP6vjHdavM7+vk7MiwuGEZRtJa0KTQeu72y2EICg9k83B7KAcGB9CVAZf8iiK9mxee7P3Qao3L+r/p3DYiXJ8t/SqtghnnP0sZQvr+bUtJtDpo9TAJUELKS0Es3aPJ6nxVHuuwzt9pkynpqfqxcs4uncJBN0zcpMLrofEGBRWz2HNXO0J57woQfpXc1GHd1vTN4T2c8JtwBhjJC7pB7tn2MJ0/lpf+QWuCzMoUGMupPsAIj1x7y+ViO2aFxlP3qH+LLZJcv++B0kzYwmag38ljr9vudS2ZuKec3utBQ4E/PZLSRViNSnP3CSep/KhS1HWWKerK3xvL/Hzydrveh+QnLAAAAAElFTkSuQmCC'
Chuỗi của bạn đã được in. Nhưng ở vị trí bắt đầu của chuỗi base64 của bạn, có một bv.b’.
Hoặc bạn có thể nói chuỗi được mã hóa base64 của bạn nằm trong cặp trích dẫn đơn.
Để loại bỏ bv & nbsp; khỏi tiền tố của mã base64 trong python, bạn có thể sử dụng phương thức String.encode [‘UTF-8,].b’ from the prefix of base64 code in Python, you can use string.encode[‘utf-8’] method.
import base64 with open["grayimage.png", "rb"] as img_file: b64_string = base64.b64encode[img_file.read[]] print[b64_string.decode['utf-8']]
Đó là nó.
Xem thêm
Hình ảnh Python Pil để Grayscale
Hình ảnh python pil đến mảng numpy
Cách cắt một hình ảnh trong Python
Cách thay đổi kích thước một hình ảnh trong Python