Python chuyển đổi luồng octet thành hình ảnh

Để lưu trữ hoặc chuyển một Hình ảnh sang một số, chúng tôi cần chuyển đổi nó thành một chuỗi sao cho chuỗi đó sẽ mô tả hình ảnh mà chúng tôi cung cấp làm đầu vào. Vì vậy, trong Python để thực hiện Thao tác này, đó là một nhiệm vụ đơn giản không phức tạp vì chúng ta có sẵn rất nhiều hàm trong Python

Chuyển đổi 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
  • Cuối cùng, chúng tôi in chuỗi mã hóa của chúng tôi

Hình ảnh được sử dụng

Python chuyển đổi luồng octet thành hình ảnh

Python3




import base64

 

 

withopen("food.jpeg","rb"base640

base641base642_______4_______3 base644

base645base646

 

withopen( 1,___ 3 4 5_______5_______6

base641 5 9

đầu ra

Đây là kết quả của hình ảnh được chuyển đổi thành chuỗi bằng Base64

Ở đây, chúng tôi đã nhận được đầu ra nhưng nếu bạn để ý trong Bắt đầu chuỗi, chúng tôi sẽ nhận được điều này b 'Điều này chúng ta có thể nói là chuỗi được mã hóa Base64 trong cặp trích dẫn đơn. Vì vậy, nếu chúng tôi muốn loại bỏ điều đó, chúng tôi có thể thực hiện các bước sau bằng cách thay thế câu lệnh in bằng print(my_string. giải mã ('utf-8'))

Chuyển đổi chuỗi thành hình ảnh

Ở đây để chuyển đổi nó từ chuỗi, nó thực sự là một quá trình ngược lại cũng là phương pháp chuyển tiếp thẳng

Bộ mã hóa Base64 sang Hình ảnh Trực tuyến giúp chuyển đổi Chuỗi Base64 thành hình ảnh. Sao chép vào clipboard và tải xuống hình ảnh

Nó cho phép bất kỳ ai có công cụ này mà không cần cài đặt trên PC hoặc thiết bị của họ để chuyển đổi dữ liệu Base64 thành tệp hình ảnh. Bảng chữ cái Base64 bao gồm tất cả 26 ký tự chữ cái viết hoa từ A-Z và 26 ký tự viết thường tương ứng từ a-z

Bạn có thể làm gì với Base64 để giải mã hình ảnh?

  • Công cụ này giúp chuyển đổi chuỗi/văn bản base64 thành hình ảnh
  • Sau khi chuyển đổi hình ảnh, bạn có thể tải xuống dưới dạng tệp png / hình ảnh
  • Công cụ này giúp bạn chuyển đổi Chuỗi Base64 thành hình ảnh một cách dễ dàng
  • Công cụ mã hóa Base64 hỗ trợ tải Tệp văn bản Base64 để chuyển đổi sang Hình ảnh. Nhấp vào nút Tải tệp lên và chọn Tệp
  • Base64 to Image Online hoạt động tốt trên Windows, MAC, Linux, Chrome, Firefox, Edge và Safari

Mô-đun chứa một số phương thức để chuyển đổi giữa các biểu diễn nhị phân và các biểu diễn nhị phân được mã hóa ASCII khác nhau. Thông thường, bạn sẽ không sử dụng trực tiếp các chức năng này mà sử dụng các mô-đun bao bọc như hoặc thay vào đó. Mô-đun chứa các hàm cấp thấp được viết bằng C để có tốc độ cao hơn được sử dụng bởi các mô-đun cấp cao hơn

Ghi chú

Các hàm a2b_* chấp nhận các chuỗi Unicode chỉ chứa các ký tự ASCII. Các chức năng khác chỉ chấp nhận (chẳng hạn như và các đối tượng khác hỗ trợ giao thức bộ đệm)

Đã thay đổi trong phiên bản 3. 3. Các chuỗi unicode chỉ ASCII hiện được chấp nhận bởi các hàm a2b_*.

Mô-đun xác định các chức năng sau

binascii. a2b_uu(chuỗi)

Chuyển đổi một dòng dữ liệu được mã hóa thành nhị phân và trả về dữ liệu nhị phân. Các dòng thường chứa 45 byte (nhị phân), ngoại trừ dòng cuối cùng. Dữ liệu dòng có thể được theo sau bởi khoảng trắng

binascii. b2a_uu(dữ liệu , * , dấu ngược=Sai)

Chuyển đổi dữ liệu nhị phân thành một dòng ký tự ASCII, giá trị trả về là dòng đã chuyển đổi, bao gồm ký tự xuống dòng. Độ dài của dữ liệu tối đa là 45. Nếu backtick là true, số 0 được biểu thị bằng

>>> import binascii
>>> binascii.b2a_hex(b'\xb9\x01\xef')
b'b901ef'
>>> binascii.hexlify(b'\xb9\x01\xef', '-')
b'b9-01-ef'
>>> binascii.b2a_hex(b'\xb9\x01\xef', b'_', 2)
b'b9_01ef'
>>> binascii.b2a_hex(b'\xb9\x01\xef', b' ', -2)
b'b901 ef'
2 thay vì dấu cách

Đã thay đổi trong phiên bản 3. 7. Đã thêm tham số backtick.

binascii. a2b_base64(chuỗi , / , * , strict_mode=Sai)

Chuyển đổi một khối dữ liệu base64 trở lại nhị phân và trả về dữ liệu nhị phân. Nhiều hơn một dòng có thể được thông qua tại một thời điểm

Nếu chế độ nghiêm ngặt là đúng, chỉ dữ liệu base64 hợp lệ sẽ được chuyển đổi. Dữ liệu base64 không hợp lệ sẽ tăng

Cơ sở hợp lệ64
  • Phù hợp với RFC 3548

  • Chỉ chứa các ký tự từ bảng chữ cái base64

  • Không chứa dữ liệu dư thừa sau khi đệm (bao gồm phần đệm thừa, dòng mới, v.v. )

  • Không bắt đầu bằng phần đệm

Đã thay đổi trong phiên bản 3. 11. Đã thêm thông số chế độ nghiêm ngặt.

binascii. b2a_base64(dữ liệu , * , dòng mới=Đúng)

Chuyển đổi dữ liệu nhị phân thành một dòng ký tự ASCII trong mã hóa base64. Giá trị trả về là dòng đã chuyển đổi, bao gồm ký tự xuống dòng nếu dòng mới là true. Đầu ra của chức năng này tuân theo RFC 3548

Đã thay đổi trong phiên bản 3. 6. Đã thêm tham số dòng mới.

binascii. a2b_qp(dữ liệu , tiêu đề=Sai)

Chuyển đổi một khối dữ liệu có thể in được trích dẫn trở lại thành nhị phân và trả về dữ liệu nhị phân. Nhiều hơn một dòng có thể được thông qua tại một thời điểm. Nếu tiêu đề đối số tùy chọn có mặt và đúng, dấu gạch dưới sẽ được giải mã dưới dạng khoảng trắng

binascii. b2a_qp(dữ liệu , tab trích dẫn=Sai , istext=True , tiêu đề=Sai)

Chuyển đổi dữ liệu nhị phân thành (các) dòng ký tự ASCII trong mã hóa có thể in được trích dẫn. Giá trị trả về là (các) dòng đã chuyển đổi. Nếu đối số tùy chọn quotetabs hiện diện và đúng, thì tất cả các tab và khoảng trắng sẽ được mã hóa. Nếu đối số tùy chọn istext có mặt và đúng, các dòng mới không được mã hóa nhưng khoảng trắng ở cuối sẽ được mã hóa. Nếu tiêu đề đối số tùy chọn có mặt và đúng, khoảng trắng sẽ được mã hóa dưới dạng dấu gạch dưới theo RFC 1522. Nếu tiêu đề đối số tùy chọn xuất hiện và sai, các ký tự dòng mới cũng sẽ được mã hóa;

binascii. crc_hqx(dữ liệu , giá trị)

Tính toán giá trị CRC 16 bit của dữ liệu, bắt đầu với giá trị là CRC ban đầu và trả về kết quả. Điều này sử dụng đa thức CRC-CCITT x16 + x12 + x5 + 1, thường được biểu thị là 0x1021. CRC này được sử dụng ở định dạng binhex4

binascii. crc32(dữ liệu[ , giá trị])

Tính toán CRC-32, tổng kiểm tra dữ liệu 32 bit không dấu, bắt đầu bằng giá trị CRC ban đầu. CRC ban đầu mặc định bằng không. Thuật toán phù hợp với tổng kiểm tra tệp ZIP. Vì thuật toán được thiết kế để sử dụng làm thuật toán tổng kiểm tra, nên nó không phù hợp để sử dụng làm thuật toán băm chung. Sử dụng như sau

print(binascii.crc32(b"hello world"))
# Or, in two pieces:
crc = binascii.crc32(b"hello")
crc = binascii.crc32(b" world", crc)
print('crc32 = {:#010x}'.format(crc))

Đã thay đổi trong phiên bản 3. 0. Kết quả luôn không dấu.

binascii. b2a_hex(dữ liệu[ , sep[ , bytes_per_sep=1]])binascii. hexlify(dữ liệu[ , sep[ , bytes_per_sep=1]])

Trả về biểu diễn thập lục phân của dữ liệu nhị phân. Mỗi byte dữ liệu được chuyển đổi thành biểu diễn hex 2 chữ số tương ứng. Do đó, đối tượng byte được trả về dài gấp đôi độ dài của dữ liệu

Chức năng tương tự (nhưng trả về một chuỗi văn bản) cũng có thể truy cập thuận tiện bằng phương thức

Nếu sep được chỉ định, nó phải là một đối tượng str hoặc byte ký tự đơn. Nó sẽ được chèn vào đầu ra sau mỗi bytes_per_sep byte đầu vào. Vị trí dấu phân cách được tính từ đầu bên phải của đầu ra theo mặc định, nếu bạn muốn tính từ bên trái, hãy cung cấp giá trị bytes_per_sep âm

>>> import binascii
>>> binascii.b2a_hex(b'\xb9\x01\xef')
b'b901ef'
>>> binascii.hexlify(b'\xb9\x01\xef', '-')
b'b9-01-ef'
>>> binascii.b2a_hex(b'\xb9\x01\xef', b'_', 2)
b'b9_01ef'
>>> binascii.b2a_hex(b'\xb9\x01\xef', b' ', -2)
b'b901 ef'

Đã thay đổi trong phiên bản 3. 8. Các tham số sep và bytes_per_sep đã được thêm vào.

binascii. a2b_hex(hexstr)binascii. unhexlify(hexstr)

Trả về dữ liệu nhị phân được biểu thị bằng chuỗi thập lục phân hexstr. Hàm này nghịch biến với. hexstr phải chứa số chẵn các chữ số thập lục phân (có thể là chữ hoa hoặc chữ thường), nếu không sẽ xảy ra ngoại lệ

Chức năng tương tự (chỉ chấp nhận các đối số chuỗi văn bản, nhưng tự do hơn đối với khoảng trắng) cũng có thể truy cập được bằng phương thức lớp

ngoại lệ binascii. Lỗi

Ngoại lệ phát sinh do lỗi. Đây thường là lỗi lập trình

ngoại lệ binascii. chưa hoàn thiện

Ngoại lệ được đưa ra trên dữ liệu không đầy đủ. Đây thường không phải là lỗi lập trình, nhưng có thể được xử lý bằng cách đọc thêm một chút dữ liệu và thử lại

Làm cách nào để chuyển đổi nhị phân thành hình ảnh trong Python?

Nhập thư viện cần thiết. Trong tất cả các ví dụ sau, thư viện Python bắt buộc là OpenCV. .
Đọc một hình ảnh đầu vào sử dụng cv2. imread(). .
Bây giờ hãy chuyển đổi hình ảnh BGR này thành hình ảnh thang độ xám như bên dưới bằng cách sử dụng cv2. hàm cvtColor(). .
Áp dụng ngưỡng cv2. .
Hiển thị hình ảnh nhị phân đã chuyển đổi

Luồng octet trong Python là gì?

Loại con "octet-stream" được dùng để chỉ ra rằng phần thân chứa dữ liệu nhị phân tùy ý .

Làm cách nào để chuyển đổi luồng octet ứng dụng thành hình ảnh trong C#?

Bạn có thể sử dụng lớp ImageConverter triển khai phương thức ConvertFrom() . Nó cho phép bạn chuyển đổi một đối tượng được chỉ định thành một hình ảnh.

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

cú pháp. Hình ảnh. tobyte(encoder_name='raw', *args)
Thông số
encoder_name – Sử dụng bộ mã hóa nào. Mặc định là sử dụng bộ mã hóa “thô” tiêu chuẩn. args – Đối số bổ sung cho bộ mã hóa
trả lại. Đối tượng byte