Chuyển đổi hình ảnh thành byte python

PIL là Thư viện hình ảnh Python cung cấp trình thông dịch python với khả năng chỉnh sửa hình ảnh. Mô-đun Image cung cấp một lớp có cùng tên được sử dụng để thể hiện hình ảnh PIL. Mô-đun này cũng cung cấp một số chức năng xuất xưởng, bao gồm chức năng tải hình ảnh từ tệp và tạo hình ảnh mới

Đôi khi, chúng tôi có thể muốn một hình ảnh jpg hoặc png trong bộ nhớ được biểu thị dưới dạng dữ liệu nhị phân. Nhưng thông thường, những gì chúng ta có là hình ảnh ở định dạng OpenCV [Numpy ndarray] hoặc PIL Image. Trong bài đăng này, tôi sẽ chia sẻ cách chuyển đổi hình ảnh Numpy hoặc đối tượng PIL Image thành dữ liệu nhị phân mà không lưu hình ảnh bên dưới vào đĩa

Nếu tệp hình ảnh được lưu trên đĩa, chúng ta có thể đọc nó trực tiếp ở định dạng nhị phân bằng phương pháp open[] bằng cách sử dụng cờ b

with open['test.jpg', 'rb'] as f:
    byte_im = f.read[]

Bây giờ hình ảnh sẽ được đọc từ đĩa vào bộ nhớ và vẫn ở định dạng nhị phân

Điều gì sẽ xảy ra nếu chúng ta muốn thay đổi kích thước hình ảnh gốc và chuyển đổi nó thành dữ liệu nhị phân mà không lưu hình ảnh đã thay đổi kích thước và đọc lại từ đĩa cứng?

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

Chúng tôi có thể làm điều đó với sự trợ giúp của OpenCV hoặc PIL

OpenCV

Đây là cách để đạt được điều đó trong OpenCV

import cv2

im = cv2.imread['test.jpg']
im_resize = cv2.resize[im, [500, 500]]

is_success, im_buf_arr = cv2.imencode[".jpg", im_resize]
byte_im = im_buf_arr.tobytes[]

# or using BytesIO
# io_buf = io.BytesIO[im_buf_arr]
# byte_im = io_buf.getvalue[]

Một lời giải thích nhỏ ở đây. sẽ mã hóa Numpy ndarray theo định dạng đã chỉ định. Phương thức này sẽ trả về hai giá trị, giá trị đầu tiên là liệu thao tác có thành công hay không và giá trị thứ hai là hình ảnh được mã hóa trong mảng Numpy một chiều

Sau đó, bạn có thể chuyển đổi mảng được trả về thành byte thực bằng phương thức tobytes[] hoặc. Cuối cùng chúng ta cũng có thể nhận được byte_im. Tương tự với việc lưu hình ảnh đã thay đổi kích thước vào đĩa cứng và sau đó đọc nó ở định dạng nhị phân, nhưng bước lưu bị loại bỏ và tất cả thao tác được thực hiện trong bộ nhớ

PIL

Nếu bạn thích sử dụng PIL để xử lý ảnh. Bạn có thể sử dụng đoạn mã sau

import io
from PIL import Image

im = Image.open['test.jpg']
im_resize = im.resize[[500, 500]]
buf = io.BytesIO[]
im_resize.save[buf, format='JPEG']
byte_im = buf.getvalue[]

Trong đoạn code trên, chúng ta lưu đối tượng im_resize Image vào đối tượng

import cv2

im = cv2.imread['test.jpg']
im_resize = cv2.resize[im, [500, 500]]

is_success, im_buf_arr = cv2.imencode[".jpg", im_resize]
byte_im = im_buf_arr.tobytes[]

# or using BytesIO
# io_buf = io.BytesIO[im_buf_arr]
# byte_im = io_buf.getvalue[]
0
import cv2

im = cv2.imread['test.jpg']
im_resize = cv2.resize[im, [500, 500]]

is_success, im_buf_arr = cv2.imencode[".jpg", im_resize]
byte_im = im_buf_arr.tobytes[]

# or using BytesIO
# io_buf = io.BytesIO[im_buf_arr]
# byte_im = io_buf.getvalue[]
1. Lưu ý trường hợp này bạn phải chỉ định lưu vì PIL không biết định dạng ảnh trong trường hợp này. Chuỗi byte có thể được truy xuất bằng cách sử dụng phương pháp
import cv2

im = cv2.imread['test.jpg']
im_resize = cv2.resize[im, [500, 500]]

is_success, im_buf_arr = cv2.imencode[".jpg", im_resize]
byte_im = im_buf_arr.tobytes[]

# or using BytesIO
# io_buf = io.BytesIO[im_buf_arr]
# byte_im = io_buf.getvalue[]
2 của biến
import cv2

im = cv2.imread['test.jpg']
im_resize = cv2.resize[im, [500, 500]]

is_success, im_buf_arr = cv2.imencode[".jpg", im_resize]
byte_im = im_buf_arr.tobytes[]

# or using BytesIO
# io_buf = io.BytesIO[im_buf_arr]
# byte_im = io_buf.getvalue[]
1

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

Làm cách nào tôi có thể nhận được byte của hình ảnh?

Thuật toán. .
Áp dụng phương thức read[] lớp ImageIO để đọc tệp hình ảnh
Tạo một đối tượng của lớp ByteArrayOutputStream
Sử dụng phương thức write[] cho đối tượng đã tạo
Bây giờ, chuyển đổi nội dung thành mảng byte bằng phương thức toByteArray[]

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

Chạy lệnh python -m SimpleHTTPServer [python2] hoặc python -m http. máy chủ [python3] để biến thư mục thành ứng dụng web . Thư mục là nơi bạn để hình ảnh của mình. Bạn có thể truy xuất bất kỳ hình ảnh nào trong thư mục này dưới dạng bất kỳ tài nguyên dựa trên URL nào.

Chủ Đề