Hướng dẫn how do i make an image base64 in python? - làm cách nào để tạo một image base64 trong python?

230

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 muốn mã hóa một hình ảnh thành một chuỗi bằng mô -đun Base64. Tôi đã gặp phải một vấn đề mặc dù. Làm cách nào để chỉ định hình ảnh tôi muốn được mã hóa? Tôi đã thử sử dụng thư mục cho hình ảnh, nhưng điều đó chỉ đơn giản là dẫn đến thư mục được mã hóa. Tôi muốn tệp hình ảnh thực tế được mã hóa.

CHỈNH SỬA

Tôi đã thử đoạn trích này:

with open("C:\Python26\seriph2.BMP", "rb") as f:
    data12 = f.read()
    UU = data12.encode("base64")
    UUU = base64.b64decode(UU)

    print UUU

    self.image = ImageTk.PhotoImage(Image.open(UUU))

Nhưng tôi gặp lỗi sau:

Traceback (most recent call last):
  File "", line 245, in run_nodebug
  File "C:\Python26\GUI1.2.9.py", line 473, in 
    app = simpleapp_tk(None)
  File "C:\Python26\GUI1.2.9.py", line 14, in __init__
    self.initialize()
  File "C:\Python26\GUI1.2.9.py", line 431, in initialize
    self.image = ImageTk.PhotoImage(Image.open(UUU))
  File "C:\Python26\lib\site-packages\PIL\Image.py", line 1952, in open
    fp = __builtin__.open(fp, "rb")
TypeError: file() argument 1 must be encoded string without NULL bytes, not str

Tôi đang làm gì sai?

Hướng dẫn how do i make an image base64 in python? - làm cách nào để tạo một image base64 trong python?

Hỏi ngày 15 tháng 9 năm 2010 lúc 7:24Sep 15, 2010 at 7:24

hình chữ nhậtrectangletangle

48.2K91 Huy hiệu vàng198 Huy hiệu bạc273 Huy hiệu Đồng91 gold badges198 silver badges273 bronze badges

Tôi không chắc tôi hiểu câu hỏi của bạn. Tôi cho rằng bạn đang làm một cái gì đó dọc theo dòng của:

import base64

with open("yourfile.ext", "rb") as image_file:
    encoded_string = base64.b64encode(image_file.read())

Tất nhiên, bạn phải mở tệp trước và đọc nội dung của nó - bạn không thể chỉ cần chuyển đường dẫn đến chức năng mã hóa.

Chỉnh sửa: OK, đây là bản cập nhật sau khi bạn đã chỉnh sửa câu hỏi ban đầu của mình. Ok, here is an update after you have edited your original question.

Trước hết, hãy nhớ sử dụng các chuỗi RAW (tiền tố chuỗi với 'r') khi sử dụng các trình phân cách đường dẫn trên Windows, để tránh vô tình nhấn một ký tự thoát. Thứ hai, hình ảnh của pil.

Điều đó đang được nói, bạn có thể sử dụng CStringio để tạo một đối tượng như vậy từ bộ đệm bộ nhớ:

import cStringIO
import PIL.Image

# assume data contains your decoded image
file_like = cStringIO.StringIO(data)

img = PIL.Image.open(file_like)
img.show()

Đã trả lời ngày 15 tháng 9 năm 2010 lúc 7:31Sep 15, 2010 at 7:31

4

Câu trả lời đầu tiên sẽ in một chuỗi với tiền tố B '. Điều đó có nghĩa là chuỗi của bạn sẽ giống như b'Your_String 'để giải quyết vấn đề này, vui lòng thêm dòng mã sau.

encoded_string= base64.b64encode(img_file.read())
print(encoded_string.decode('utf-8'))

Tôi đã trải nghiệm điều này trong khi chuyển đổi hình ảnh thành chuỗi Base64. Bạn có thể xem cách tôi loại bỏ nó từ đó. Liên kết ở đây hình ảnh đến chuỗi base64 và sửa 'B từ tiền tố

Đã trả lời ngày 26 tháng 4 năm 2019 lúc 21:20Apr 26, 2019 at 21:20

Hướng dẫn how do i make an image base64 in python? - làm cách nào để tạo một image base64 trong python?

CodespeedyCodespeedyCodeSpeedy

6506 huy hiệu bạc11 huy hiệu đồng6 silver badges11 bronze badges

4

import base64
from PIL import Image
from io import BytesIO

with open("image.jpg", "rb") as image_file:
    data = base64.b64encode(image_file.read())

im = Image.open(BytesIO(base64.b64decode(data)))
im.save('image1.png', 'PNG')

Đã trả lời ngày 19 tháng 9 năm 2019 lúc 6:55Sep 19, 2019 at 6:55

Hướng dẫn how do i make an image base64 in python? - làm cách nào để tạo một image base64 trong python?

Abhijith Mabhijith mAbhijith M

5974 Huy hiệu bạc5 Huy hiệu Đồng4 silver badges5 bronze badges

1

Mượn từ những gì IVO van der Wijk và Gnibbler đã phát triển trước đó, đây là một giải pháp năng động

import cStringIO
import PIL.Image

image_data = None

def imagetopy(image, output_file):
    with open(image, 'rb') as fin:
        image_data = fin.read()

    with open(output_file, 'w') as fout:
        fout.write('image_data = '+ repr(image_data))

def pytoimage(pyfile):
    pymodule = __import__(pyfile)
    img = PIL.Image.open(cStringIO.StringIO(pymodule.image_data))
    img.show()

if __name__ == '__main__':
    imagetopy('spot.png', 'wishes.py')
    pytoimage('wishes')

Sau đó, bạn có thể quyết định biên dịch tệp hình ảnh đầu ra với Cython để làm cho nó mát mẻ. Với phương pháp này, bạn có thể gói tất cả đồ họa của mình thành một mô -đun.

Đã trả lời ngày 3 tháng 10 năm 2013 lúc 15:22Oct 3, 2013 at 15:22

Hướng dẫn how do i make an image base64 in python? - làm cách nào để tạo một image base64 trong python?

ichuxichuxiChux

2.19621 huy hiệu bạc35 huy hiệu đồng21 silver badges35 bronze badges

Như tôi đã nói trong câu hỏi trước đây của bạn, không cần phải mã hóa chuỗi64, nó sẽ chỉ làm cho chương trình chậm hơn. Chỉ cần sử dụng repr

>>> with open("images/image.gif", "rb") as fin:
...  image_data=fin.read()
...
>>> with open("image.py","wb") as fout:
...  fout.write("image_data="+repr(image_data))
...

Bây giờ hình ảnh được lưu trữ dưới dạng biến gọi là

Traceback (most recent call last):
  File "", line 245, in run_nodebug
  File "C:\Python26\GUI1.2.9.py", line 473, in 
    app = simpleapp_tk(None)
  File "C:\Python26\GUI1.2.9.py", line 14, in __init__
    self.initialize()
  File "C:\Python26\GUI1.2.9.py", line 431, in initialize
    self.image = ImageTk.PhotoImage(Image.open(UUU))
  File "C:\Python26\lib\site-packages\PIL\Image.py", line 1952, in open
    fp = __builtin__.open(fp, "rb")
TypeError: file() argument 1 must be encoded string without NULL bytes, not str
0 trong một tệp gọi là
Traceback (most recent call last):
  File "", line 245, in run_nodebug
  File "C:\Python26\GUI1.2.9.py", line 473, in 
    app = simpleapp_tk(None)
  File "C:\Python26\GUI1.2.9.py", line 14, in __init__
    self.initialize()
  File "C:\Python26\GUI1.2.9.py", line 431, in initialize
    self.image = ImageTk.PhotoImage(Image.open(UUU))
  File "C:\Python26\lib\site-packages\PIL\Image.py", line 1952, in open
    fp = __builtin__.open(fp, "rb")
TypeError: file() argument 1 must be encoded string without NULL bytes, not str
1 Bắt đầu một trình thông dịch mới và nhập Image_Data

>>> from image import image_data
>>>

Đã trả lời ngày 15 tháng 9 năm 2010 lúc 7:36Sep 15, 2010 at 7:36

Hướng dẫn how do i make an image base64 in python? - làm cách nào để tạo một image base64 trong python?

John La Rooyjohn La RooyJohn La Rooy

286K51 Huy hiệu vàng359 Huy hiệu bạc499 Huy hiệu đồng51 gold badges359 silver badges499 bronze badges

3

Công việc của nó cho tôi

import base64
import requests

# Getting image in bytes
response = requests.get("image_url") 

# image encoding
encoded_image = base64.b64encode(response.content)

# image decoding and without it's won't work due to some '\xff' error
decoded_image= base64.b64decode(encoded_image)

Đã trả lời ngày 7 tháng 4 năm 2021 lúc 10:54Apr 7, 2021 at 10:54

Hướng dẫn how do i make an image base64 in python? - làm cách nào để tạo một image base64 trong python?

Làm cách nào để chuyển đổi hình ảnh thành Base64 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 Base 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 Image2.read () đọc hình ảnh và mã hóa nó bằng b64encode () Đó là phương thức được sử dụng để mã hóa dữ liệu thành base64 ..

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

Để giải mã một hình ảnh từ chuỗi được mã hóa base64, hãy thực hiện các bước sau ...
Mở Base64 để chuyển đổi hình ảnh ..
Nhập chuỗi mã hóa Base64 ..
Chọn loại hình ảnh.....
Sau khi chọn loại hình ảnh, nhấp vào nút "Tạo hình ảnh" ..
Công cụ giải mã chuỗi được mã hóa base64 và hiển thị hình ảnh ..

Làm cách nào để mã hóa thành Base64 trong Python?

Để mã hóa hình ảnh, chúng tôi chỉ cần sử dụng hàm cơ sở64.b64encode (s).Python mô tả chức năng như sau: Mã hóa đối tượng giống như byte bằng cách sử dụng base64 và trả về các byte được mã hóa.use the function base64. b64encode(s) . Python describes the function as follows: Encode the bytes-like object s using Base64 and return the encoded bytes.

Chúng ta có thể chuyển đổi hình ảnh thành base64 không?

Công cụ mã hóa hình ảnh hỗ trợ tải tệp hình ảnh để chuyển đổi thành Base64.Nhấp vào nút Tải lên hình ảnh và chọn Tệp.Hình ảnh đến Base64 trực tuyến hoạt động tốt trên Windows, Mac, Linux, Chrome, Firefox, Edge và Safari.. Click on the Upload Image button and select File. Image to Base64 Online works well on Windows, MAC, Linux, Chrome, Firefox, Edge, and Safari.