python Pil getdata() 如何快速十六进制?

How do python Pil getdata() to hex fast?

  fil="IMG1.JPG"
  im = Image.open(fil) 
  pixels=list(im.getdata())
  hex_list=[]
  for px in pixels:
    he='%02x%02x%02x' % px
    hex_list.append(he)

代码可以工作,但是当图像很大时太慢了,不可能更快?是否可以直接在十六进制中获取数据()?

感谢您的关注?好作品。

要将原始图像转换为十六进制字符串,请使用 tobytes() 获取 bytes,然后使用 binascii 模块转换为十六进制。

import binascii

im_bytes = im.tobytes()
im_hex = binascii.hexlify(im_bytes)

将其转换为十六进制字符串的压缩格式(JPG、PNG):

import binascii
import io

im_bytes = io.BytesIO()
im.save(im_bytes, format='JPEG')
im_hex = binascii.hexlify(im_bytes.getvalue())

读入一张 jpg 并生成一串十六进制值。然后反转程序。取一串十六进制写成jpg文件...

import binascii

with open('my_img.jpg', 'rb') as f:
    data = f.read()
    
im_hex = binascii.hexlify(data)

# check out the hex...
print(im_hex[:10])

# reversing the procedure
im_hex = binascii.a2b_hex(im_hex)
print(im_hex[:10])

# write it back out to a jpg file
with open('my_hex.jpg', 'wb') as image_file:
    image_file.write(im_hex)