我正在尝试将图像存储为文本,以便可以为Tk gui的透明图标示例执行以下操作:

import tempfile

# byte literal code for a transparent icon, I think

ICON = (b'\x00\x00\x01\x00\x01\x00\x10\x10\x00\x00\x01\x00\x08\x00h\x05\x00\x00'

b'\x16\x00\x00\x00(\x00\x00\x00\x10\x00\x00\x00 \x00\x00\x00\x01\x00'

b'\x08\x00\x00\x00\x00\x00@\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'

b'\x00\x01\x00\x00\x00\x01') + b'\x00'*1282 + b'\xff'*64

# makes a temp file for the transparent icon and saves it

_, ICON_PATH = tempfile.mkstemp()

with open(ICON_PATH, 'wb') as icon_file:

icon_file.write(ICON)

我已经尝试过使用base 64编码,使用utf8解码,转换为字节和字节数组以及其他文章的一些答案:(Python Script to convert Image into Byte array)

import tempfile, base64, io

# byte literal code for a transparent icon, I think

ICON = (b'\x00\x00\x01\x00\x01\x00\x10\x10\x00\x00\x01\x00\x08\x00h\x05\x00\x00'

b'\x16\x00\x00\x00(\x00\x00\x00\x10\x00\x00\x00 \x00\x00\x00\x01\x00'

b'\x08\x00\x00\x00\x00\x00@\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'

b'\x00\x01\x00\x00\x00\x01') + b'\x00'*1282 + b'\xff'*64

# makes a temp file for the transparent icon and saves it

_, ICON_PATH = tempfile.mkstemp()

with open(ICON_PATH, 'wb') as icon_file:

icon_file.write(ICON)

a = open(ICON_PATH, 'rb').read()

b = base64.b64encode(a)

print b # output does not match what ICON equals above

# doesn't work; gives error

# UnicodeDecodeError: 'utf8' codec can't decode byte 0xff in position 1342: invalid start byte

# b = bytes(a).decode('utf-8')

c = bytearray(a)

print c # prints garbled junk

# gives error AttributeError: __exit__ on Image.open(ICON_PATH) line

with io.BytesIO() as output:

from PIL import Image

with Image.open(ICON_PATH) as img:

img.convert('RGB').save(output, 'BMP')

data = output.getvalue()[14:]

print data

它也不适用于b.decode('utf-8')或b.encode('utf-8')

python大神给出的解决方案

我想你在找

print(repr(a))

对于代码中定义的a,它会打印b'\x00\x00\x01\x00\x01\x00\x10\x10\x00\x00\x01\x00\x08\x00h\x05\x00\x00\x16\x00\x00\x00(\x00\x00\x00\x10\x00\x00\x00 \x00\x00\x00\x01\x00\x08,依此类推,类似于原始的ICON定义,但是它很大,因为末尾的所有\x00和\xff都被写出。

在您的代码中,您包括了一些临时压缩(即+ b'\x00'*1282 + b'\xff'*64)。要自动获取压缩,因此源文件中的ICON定义不必太大,请利用现有的压缩库,例如zlib:

import zlib

print(repr(zlib.compress(a)))

在我的机器上,这会打印'x\x9cc``\x04B\x01\x01\x06 \xc9\xc1\x90\xc1\xca\xc0 \xc6\xc0\xc0\xa0\x01\xc4@!\x06\x05\x06\x888\x088\xb02 \x00#\x14\x8f\x82Q0\nF\xc1\x08\x05\xff)\x04\x00U\xf1A\x17',它很小。要解压缩,请使用zlib.decompress:

import zlib

ICON = zlib.decompress(b'x\x9cc``\x04B\x01\x01\x06 \xc9\xc1\x90\xc1\xca\xc0 '

b'\xc6\xc0\xc0\xa0\x01\xc4@!\x06\x05\x06\x888\x088\xb02 \x00#\x14\x8f\x82'

b'Q0\nF\xc1\x08\x05\xff)\x04\x00U\xf1A\x17')

ICON现在具有与原始示例相同的值。

如果现在您想要一个在源文件中更紧凑的表示形式,那么该应用base 64编码了,该编码摆脱了python(\x..-格式)中的冗长二进制编码。

编码:

import base64, zlib

print(repr(base64.b64encode(zlib.compress(a))))

这给了我'eJxjYGAEQgEBBiDJwZDBysAgxsDAoAHEQCEGBQaIOAg4sDIgACMUj4JRMApGwQgF/ykEAFXxQRc='

解码:

import base64, zlib

ICON = zlib.decompress(base64.b64decode('eJxjYGAEQgEBBiDJwZDBy'

'sAgxsDAoAHEQCEGBQaIOAg4sDIgACMUj4JRMApGwQgF/ykEAFXxQRc='))

同样,ICON具有与最初指定的值相同的值。

所示的最终策略适用于ico文件。我看到您还提到了png文件。这些已经应用了压缩,因此您可能应该更喜欢只使用base 64编码:

import base64

print(base64.b64encode(png_icon))

PNG_ICON = base64.b64decode( ** insert literal here ** )

事实证明,这些编码也可以通过str.encode和str.decode API使用。这使您无需编写import即可退出。为了完整起见,它们是:

编码方式:

print(repr(a.encode('zlib').encode('base64')))

解码:

ICON = ('eJxjYGAEQgEBBiDJwZDBysAgxsDAoAHEQCEGBQaIOAg4sDIgACMUj4J'

'RMApGwQgF/ykEAFXxQRc=').decode('base64').decode('zlib')

python图片转换成文字_在python中将图像转换为字节文字 - python相关推荐

  1. opencv把图片转换成二进制_Python+OpenCV实现将图像转换为二进制格式

    Python+OpenCV实现将图像转换为二进制格式 发布时间:2020-09-20 20:30:58 来源:脚本之家 阅读:68 作者:大蛇王 在学习tensorflow的过程中,有一个问题,ten ...

  2. python 图片转换成py文件

    python 图片转换成py文件 app.png 图片转为py文件.py import base64def pic_to_py(path_):"""将图像文件转换为py文 ...

  3. python图片转换成文字的手机软件_手机如何将图片转换成文字?用这两种方法转换很简单...

    没有扫描仪怎么将纸质文档变成电子文档?图片上的文字太多想要提取没有好的方法吃苦受累的就是自己!今天分享给大家用手机将图片转换成文字的方法,轻松提取图片文字很简单! 方法一.迅捷文字识别--手机APP ...

  4. python图片转成素描_巧用python实现图片转换成素描和漫画格式

    [相关学习推荐:python教程] 本文实例为大家分享了python实现图片转换成素描和漫画格式的具体代码,供大家参考,具体内容如下 原图 图片转换后的成果 源码# -*- coding: utf-8 ...

  5. php 将图片转成二进制,php怎么把图片转换成二进制_后端开发

    php如何去掉数组的key_后端开发 在PHP中可以使用"array_values"函数去掉数组的key,该函数的作用就是返回包含数组中所有的值的数组,其语法是"arra ...

  6. opencv把图片转换成二进制_如何增强图像,然后使用Python和OpenCV将其转换为二进制图像?...

    我创建了一个简单的例子来说明我要做的事情:#!/usr/bin/python #------------------------------------------------------------ ...

  7. python十六进制转换成八进制_怎么把十六进制转化为八进制

    展开全部 八进制与十六进制之间的转换32313133353236313431303231363533e4b893e5b19e31333366303831有两种方法: 第一种:他们之间的转换可以先转成二 ...

  8. python字符串转换成整数_在Python中将字符串转换为整数的方法

    在本文中,我们将向你展示如何将Python字符串转换为整数,可在Linux操作平台上进行.Python中的所有数据类型(包括整数和字符串)都是对象,通常在编写Python代码时,你需要将一种数据类型转 ...

  9. css如何把图片设置为黑白_使用CSS将图像转换为黑白图像

    css如何把图片设置为黑白 Desaturating a color image couldn't be simpler with CSS. The filter is typically appli ...

  10. linux shell转换成时间,如何在Bash中将时间戳转换为日期?

    如何在Bash中将时间戳转换为日期? 我需要一个将Unix时间戳转换为日期的shell命令或脚本. 输入可以来自第一个参数或来自stdin,允许以下使用模式: ts2date 1267619929 和 ...

最新文章

  1. android 在一个Activity(A)中结束另一个Activity(B)
  2. 解决:the selection is not within a valid module
  3. python爬取新闻网站内容findall函数爬取_Python爬取新闻网标题、日期、点击量
  4. 关于bn层的进一步认识
  5. python实践项目(七)
  6. 为PHP开发搭建环境
  7. Output Arcade for Mac:集合大量 Loop 素材的素材库插件
  8. 携程App的网络性能优化实践
  9. Python 帮助信息(pydoc模块)
  10. [转载] 七龙珠第一部——第020话 修行的威力
  11. 文件类型识别工具:TrID(trid)下载安装及使用
  12. 10g新特性之multi-block reads自动调优
  13. Python 模拟轮盘抽奖游戏
  14. quora ios_企业家的Quora指南
  15. Zynga完成对快速增长的超休闲游戏领域的领导者——伊斯坦布尔的Rollic的收购
  16. 本站最全-unity常用API大全(万字详解),不信你不收藏
  17. 数据库 redis
  18. AndroidBLE--Measuring distance(测量距离)
  19. 分治、CDQ分治小结(need to be updated)
  20. mysql数据库编程题题_mysql数据库编程题测试

热门文章

  1. java中sql查重跟去重_SQL查重去重
  2. 大学生计算机自我鉴定500字,大学生自我鉴定500字
  3. 专网网速测试软件,CMD怎么测试网速?测网速用命令PING
  4. 23、Camunda DMN决策初探
  5. 如何在Mac上恢复未保存的word文档
  6. 慧之声科技-巨量资料市场下的卖与买
  7. 夏普Sharp MX-B6581D 一体机驱动
  8. C语言中pow函数的使用
  9. linux读取触摸屏事件数据
  10. 【视频+PPT】2021年李宏毅版40节机器学习课程已更新完毕,推荐收藏!