Hướng dẫn store image in redis python - lưu trữ hình ảnh trong trăn redis

4

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi đang sử dụng Python và mô -đun hình ảnh (PIL) để xử lý hình ảnh.

Tôi muốn lưu trữ luồng các bit thô của đối tượng hình ảnh để redis để những người khác có thể đọc trực tiếp các hình ảnh từ redis bằng nginx & httpredis.

Vì vậy, câu hỏi của tôi là làm thế nào để có được các bit thô của một đối tượng hình ảnh và lưu trữ nó thành Redis.

Hướng dẫn store image in redis python - lưu trữ hình ảnh trong trăn redis

Jon

9.2859 Huy hiệu vàng46 Huy hiệu bạc65 Huy hiệu Đồng9 gold badges46 silver badges65 bronze badges

hỏi ngày 5 tháng 3 năm 2013 lúc 13:30Mar 5, 2013 at 13:30

Sử dụng PIL 1.1.7, Redis-2.7.2 Mô-đun PIP và Redis-2.4.10 Tôi đã có thể làm việc này hoạt động:

import Image
import redis
import StringIO

output = StringIO.StringIO()
im = Image.open("/home/cwgem/Pictures/portrait.png")
im.save(output, format=im.format)

r = redis.StrictRedis(host='localhost')
r.set('imagedata', output.getvalue())
output.close()

Tôi thấy rằng Image.tostring không đáng tin cậy, vì vậy phương pháp này sử dụng StringIO để làm cho một chuỗi dường như là một tệp. format=im.format là cần thiết vì StringIO không có "phần mở rộng". Sau đó tôi đã kiểm tra dữ liệu hình ảnh được lưu ổn bằng cách thực hiện:

redis-cli --raw get 'imagedata' >test.png

Và xác minh tôi đã lấy lại một hình ảnh.

Đã trả lời ngày 5 tháng 3 năm 2013 lúc 14:30Mar 5, 2013 at 14:30

Hướng dẫn store image in redis python - lưu trữ hình ảnh trong trăn redis

CWGEMCWGEMcwgem

2.61918 Huy hiệu bạc15 Huy hiệu đồng18 silver badges15 bronze badges

0

import redis
r =  redis.StrictRedis()
img = open("/path/to/img.jpeg","rb").read()
r.set("bild1",img)

hoạt động ở đây quá!

Đã trả lời ngày 17 tháng 10 năm 2014 lúc 13:50Oct 17, 2014 at 13:50

enthus1astenthus1astenthus1ast

2.02415 huy hiệu bạc21 Huy hiệu đồng15 silver badges21 bronze badges

Viết/Đọc dữ liệu hình ảnh trên Redis bằng OpenCV hoặc PIL

Tệp này chứa văn bản unicode hai chiều có thể được giải thích hoặc biên dịch khác với những gì xuất hiện dưới đây. Để xem xét, hãy mở tệp trong một trình soạn thảo cho thấy các ký tự Unicode ẩn. Tìm hiểu thêm về các ký tự unicode hai chiều

IMPORTREDIS redis
importcv2 cv2
Nhập khẩu numpy as np
nhập khẩu time
Nhập khẩu io
Frompilimportimage PIL import Image
r = redis.strictredis.from_url ('redis: // :: 6379/1')) = redis.StrictRedis.from_url('redis://::6379/1')
img_path="image" ="image"
img1 = cv2.imread (img_path, 1) = cv2.imread(img_path, 1)
retval, bộ đệm = cv2.imencode ('. png', img1), buffer = cv2.imencode('.png', img1)
img1_bytes = np.array (bộ đệm) .toString () = np.array(buffer).tostring()
# với Open (img_path, "rb") như fid:
# img1_bytes = fid.read ()
# Viết vào Máy chủ Redis
R.SET (IMG_PATH, IMG1_BYTES).set(img_path, img1_bytes)
# Giải mã CV2
Decoded = cv2.imdecode (np.frombuffer (img1_bytes, np.uint8), 1) = cv2.imdecode(np.frombuffer(img1_bytes, np.uint8), 1)
CV2.ImWrite ("CV2.png", được giải mã).imwrite("cv2.png", decoded)
# Giải mã Pil
Image = np.Array (Image.open (io.bytesio (IMG1_BYTES)))) = np.array(Image.open(io.BytesIO(img1_bytes)))
cv2.imwrite ("pil.png", được giải mã).imwrite("PIL.png", decoded)
# Đọc Redis
img1_bytes_ = r.get (img_path) = r.get(img_path)
# Giải mã CV2+Redis
Decoded = cv2.imdecode (np.frombuffer (img1_bytes_, np.uint8), 1) = cv2.imdecode(np.frombuffer(img1_bytes_, np.uint8), 1)
cv2.imwrite ("cv2_redis.png", được giải mã).imwrite("cv2_redis.png", decoded)
# Giải mã Pil+Redis
img1_bytes_ = r.get (img_path) = r.get(img_path)
# Giải mã CV2+Redis = np.array(Image.open(io.BytesIO(img1_bytes_)))
Decoded = cv2.imdecode (np.frombuffer (img1_bytes_, np.uint8), 1).imwrite("pil_redis.png", decoded)

Tệp này chứa văn bản unicode hai chiều có thể được giải thích hoặc biên dịch khác với những gì xuất hiện dưới đây. Để xem xét, hãy mở tệp trong một trình soạn thảo cho thấy các ký tự Unicode ẩn. Tìm hiểu thêm về các ký tự unicode hai chiều

IMPORTREDIS
Nhập khẩu
nhập khẩu
Nhập khẩu
Frompilimportimage
r = redis.strictredis.from_url ('redis: // :: 6379/1'))
img1 = cv2.imread (img_path, 1)
retval, bộ đệm = cv2.imencode ('. png', img1)
img1_bytes = np.array (bộ đệm) .toString ()

Tôi có thể lưu trữ hình ảnh trong redis không?

Redis String là an toàn nhị phân, điều này có nghĩa là một chuỗi redis có thể chứa bất kỳ loại dữ liệu nào, ví dụ như hình ảnh JPEG hoặc một đối tượng ruby ​​nối tiếp., this means that a Redis string can contain any kind of data, for instance a JPEG image or a serialized Ruby object.

Bạn có thể lưu trữ các đối tượng Python trong redis?

Redis lưu trữ mọi thứ dưới dạng chuỗi, do đó chúng ta có thể lưu đối tượng Python dưới dạng chuỗi nhị phân.Một trong những cách dễ nhất để đổ và tải nhị phân vào Python cho các đối tượng Python là sử dụng dưa chua mô -đun Python.we can save the python object as a binary string. One of the easiest ways to dump and load binary in Python for Python Objects is using the python module pickle.

Làm cách nào để lưu một hình ảnh trong một thư mục trong Python?

Ở đây, chúng ta có thể thấy cách lưu một hình ảnh trong Python ...
Trong ví dụ này, tôi đã nhập một mô -đun có tên Image từ PIL và đã khai báo một hình ảnh biến và hình ảnh được gán.Mở (r'DOWDLOADS \ 3. JPG ') Đường dẫn và tên của hình ảnh cùng với phần mở rộng ..
Và tuyên bố một biến khác và hình ảnh được gán.Tiết kiệm (búp bê của người Viking. JPG) ..

Làm thế nào để Python lưu trữ dữ liệu trong redis?

Bây giờ, bạn sẽ có thể nhận được dữ liệu Redis bằng cách sử dụng các lệnh redis ...
Cài đặt thư viện Redis Client bằng PIP Mã Python sau cho phép bạn kết nối với phiên bản Redis Server mặc định.PIP3 Cài đặt Redis ..
Viết mã ứng dụng của bạn nhập Redis.redis = redis.Redis (host = 'localhost', port = '6379') redis ..