如何将python Pil getdata()快速转换为十六进制?

时间:2016-10-22 13:13:15

标签: python python-3.x python-imaging-library

  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)

代码可以工作但是当图像太大时太慢,不可能更快?可以直接用十六进制来获取getdata()吗?

感谢您的兴趣?好作品。

1 个答案:

答案 0 :(得分:0)

要将原始图像转换为十六进制字符串,请使用bytes获取tobytes(),然后使用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())