python图片转换成文字_在python中将图像转换为字节文字 - python
我正在尝试将图像存储为文本,以便可以为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相关推荐
- opencv把图片转换成二进制_Python+OpenCV实现将图像转换为二进制格式
Python+OpenCV实现将图像转换为二进制格式 发布时间:2020-09-20 20:30:58 来源:脚本之家 阅读:68 作者:大蛇王 在学习tensorflow的过程中,有一个问题,ten ...
- python 图片转换成py文件
python 图片转换成py文件 app.png 图片转为py文件.py import base64def pic_to_py(path_):"""将图像文件转换为py文 ...
- python图片转换成文字的手机软件_手机如何将图片转换成文字?用这两种方法转换很简单...
没有扫描仪怎么将纸质文档变成电子文档?图片上的文字太多想要提取没有好的方法吃苦受累的就是自己!今天分享给大家用手机将图片转换成文字的方法,轻松提取图片文字很简单! 方法一.迅捷文字识别--手机APP ...
- python图片转成素描_巧用python实现图片转换成素描和漫画格式
[相关学习推荐:python教程] 本文实例为大家分享了python实现图片转换成素描和漫画格式的具体代码,供大家参考,具体内容如下 原图 图片转换后的成果 源码# -*- coding: utf-8 ...
- php 将图片转成二进制,php怎么把图片转换成二进制_后端开发
php如何去掉数组的key_后端开发 在PHP中可以使用"array_values"函数去掉数组的key,该函数的作用就是返回包含数组中所有的值的数组,其语法是"arra ...
- opencv把图片转换成二进制_如何增强图像,然后使用Python和OpenCV将其转换为二进制图像?...
我创建了一个简单的例子来说明我要做的事情:#!/usr/bin/python #------------------------------------------------------------ ...
- python十六进制转换成八进制_怎么把十六进制转化为八进制
展开全部 八进制与十六进制之间的转换32313133353236313431303231363533e4b893e5b19e31333366303831有两种方法: 第一种:他们之间的转换可以先转成二 ...
- python字符串转换成整数_在Python中将字符串转换为整数的方法
在本文中,我们将向你展示如何将Python字符串转换为整数,可在Linux操作平台上进行.Python中的所有数据类型(包括整数和字符串)都是对象,通常在编写Python代码时,你需要将一种数据类型转 ...
- css如何把图片设置为黑白_使用CSS将图像转换为黑白图像
css如何把图片设置为黑白 Desaturating a color image couldn't be simpler with CSS. The filter is typically appli ...
- linux shell转换成时间,如何在Bash中将时间戳转换为日期?
如何在Bash中将时间戳转换为日期? 我需要一个将Unix时间戳转换为日期的shell命令或脚本. 输入可以来自第一个参数或来自stdin,允许以下使用模式: ts2date 1267619929 和 ...
最新文章
- android 在一个Activity(A)中结束另一个Activity(B)
- 解决:the selection is not within a valid module
- python爬取新闻网站内容findall函数爬取_Python爬取新闻网标题、日期、点击量
- 关于bn层的进一步认识
- python实践项目(七)
- 为PHP开发搭建环境
- Output Arcade for Mac:集合大量 Loop 素材的素材库插件
- 携程App的网络性能优化实践
- Python 帮助信息(pydoc模块)
- [转载] 七龙珠第一部——第020话 修行的威力
- 文件类型识别工具:TrID(trid)下载安装及使用
- 10g新特性之multi-block reads自动调优
- Python 模拟轮盘抽奖游戏
- quora ios_企业家的Quora指南
- Zynga完成对快速增长的超休闲游戏领域的领导者——伊斯坦布尔的Rollic的收购
- 本站最全-unity常用API大全(万字详解),不信你不收藏
- 数据库 redis
- AndroidBLE--Measuring distance(测量距离)
- 分治、CDQ分治小结(need to be updated)
- mysql数据库编程题题_mysql数据库编程题测试