python图片和字符串的转换
有个业务,需要将图片压缩转化为64位编码上传到服务端。
import json,requests,base64
#网上下载图片素材
r = requests.get("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1552573900887&di=4e80542ac9bbb801c7f1cf60fe355570&imgtype=0&src=http%3A%2F%2Fimg009.hc360.cn%2Fg1%2FM09%2F67%2F82%2FwKhQL1L26KyEFHl5AAAAAN7_Cqw821.jpg")
with open('beng.jpg','wb') as f:
f.write(r.content)
# 图片的二进制字符串
with open('beng.jpg', 'rb') as f:
content2 = f.read()
with open("beng2.jpg", 'wb') as f:
f.write(content2)
#图片的64位字符串
with open('beng.jpg','rb') as f:
content1 = base64.b64encode(f.read())
with open('beng1.jpg','wb') as f:
f.write(base64.b64decode(content1))
然后应用,先将客户端生成的64位字符保存为baseC.txt,再将服务端返回的64位字符串保存为baseS.txt。
1.先对2组64位字符长度进行比较
2.分别保存为图片
import json,base64
#获取客户端的64位字符串
with open('baseC.txt', 'rb') as f:
byteC = f.read()
# print(isinstance(byteC,bytes))
#获取服务端的64位字符串
with open('baseS.txt','r') as f:
#获取服务端的图片编码
strS = json.loads(f.read())['data']
#去除b'',先转化为byte
byte1 = str.encode(strS,"ASCII")
#使用decode去除b''
strS = bytes.decode(byte1,"utf-8")
byteS = str.encode(strS, "ASCII")
with open("baseC.jpg","wb") as f:
f.write(base64.b64decode(byteC))
with open("baseS.jpg","wb") as f:
f.write(base64.b64decode(byteS))
经过比对,服务端保存的字符串存储图片失败,客户端保存图片无内容,因此先修复客户端,再进行比对
python图片和字符串的转换的更多相关文章
- Python十六进制与字符串的转换
电脑上装了Python2.7和3.3两个版本,平时运行程序包括在Eclipse里面调试都会使用2.7,但是由于某些原因在cmd命令行中输入python得到的解释器则是3.3, 一直没对此做处理,因为这 ...
- python 爬虫数据处理字符串时间转换格式方法
startDate = "2018-10-01"endDate = "2018-10-31" ###字符转化为日期startTime = datetime.da ...
- Python 字节与字符串的转换
html = urlopen("http://www.cnblogs.com/ryanzheng/p/9665224.html") bsObj = BeautifulSoup(ht ...
- python数组和字符串互相转换
字符串转数组 str = '1,2,3' arr = str.split(',') 数组转字符串 arr = ['a','b'] str = ','.join(arr) arr = [1,2,3] s ...
- java自带BASE64工具进行图片和字符串转换
java自带BASE64工具进行图片和字符串转换 import java.io.File; import java.io.FileInputStream; import java.io.FileOut ...
- java自带BASE64工具进行图片和字符串转换【转】
java自带BASE64工具进行图片和字符串转换 import java.io.File; import java.io.FileInputStream; import java.io.FileOut ...
- python base64 编解码,转换成Opencv,PIL.Image图片格式
二进制打开图片文件,base64编解码,转成Opencv格式: # coding: utf-8 import base64 import numpy as np import cv2 img_file ...
- Python技巧——list与字符串互相转换
Python技巧——list与字符串互相转换 在Python的编程中,经常会涉及到字符串与list之间的转换问题,下面就将两者之间的转换做一个梳理. 1.字符串转换成list 命令:list() ...
- 【转】Python 字符串大小写转换
转载自:python 中字符串大小写转换 一.pyhton字符串的大小写转换, 常用的有以下几种方法: 1.对字符串中所有字符(仅对字母有效)的大小写转换,有两个方法: print 'just to ...
随机推荐
- Linux下安装Blender
Blender在Windows下,可以在官方直接下载免安装的版本,下载解压缩就能用. 在Linux下稍微麻烦一点点. 如下3步安装的blender不一定是最新版本,且安装完成后发现设置中文会变为方块. ...
- 2017-2018-2 20165313实验三 《敏捷开发与XP实践》
实验报告封面 实验内容及步骤 实验一 1.试验要求: 参考http://www.cnblogs.com/rocedu/p/6371315.html#SECCODESTANDARD安装alibaba 插 ...
- jsp中的include静态包含与动态包含,
d动态包含与静态包含的最大区别是 静态包含:<%@ include file = "文件名.jsp"%>,在<body>的标签外定义.在没有编译的时候,两个 ...
- 数学与猜想 数学中的归纳和类比 (G. 波利亚 著)
第一章 归纳方法 (已看) $1. 经验和信念 $2. 启发性联想 $3. 支持性联想 $4. 归纳的态度 第二章 一般化,特殊化,类比 (已看) $1. 一般化,特殊化,类比和归纳 $2. 一般化 ...
- C# to il 9 Properties and Indexers(属性和索引器)
A field is simply a memory location, whereas, a property is a collection of methods. Aproperty is re ...
- C# Monitor的Wait和Pulse方法使用详解
[转载]http://blog.csdn.net/qqsttt/article/details/24777553 Monitor的Wait和Pulse方法在线程的同步锁使用中是比较复杂的,理解稍微困难 ...
- Day 38 HTML
HTML文档结构 <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset=&qu ...
- 查看hp小型机命令集
查看HP小型机的信息的命令集(一) 1.机型 #model 9000/800/L2000-44 注意:其中44是指每个cpu有440MHZ. 2.cpu个数 #top CPU LOAD USER NI ...
- Jenkins入门-部署gitlab 项目(8)
目前很多公司代码管理已经迁入到了git上,大多数的公司使用的代码管理服务器是gitlab,目前持续交付的流行很多公司都采用Jenkins完成持续交付工作.首先我们需要通过Jenkins来获取我们的项目 ...
- Qt中的主窗口之菜单栏
1.Qt中的主窗口 主窗口为建立应用程序用户界面提供了一个框架 Qt开发平台中直接支持主窗口的概念 QMainWindow是Qt中主窗口的基类 QMainWindow继承于QWidget是一种容器类型 ...