有个业务,需要将图片压缩转化为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图片和字符串的转换的更多相关文章

  1. Python十六进制与字符串的转换

    电脑上装了Python2.7和3.3两个版本,平时运行程序包括在Eclipse里面调试都会使用2.7,但是由于某些原因在cmd命令行中输入python得到的解释器则是3.3, 一直没对此做处理,因为这 ...

  2. python 爬虫数据处理字符串时间转换格式方法

    startDate = "2018-10-01"endDate = "2018-10-31" ###字符转化为日期startTime = datetime.da ...

  3. Python 字节与字符串的转换

    html = urlopen("http://www.cnblogs.com/ryanzheng/p/9665224.html") bsObj = BeautifulSoup(ht ...

  4. python数组和字符串互相转换

    字符串转数组 str = '1,2,3' arr = str.split(',') 数组转字符串 arr = ['a','b'] str = ','.join(arr) arr = [1,2,3] s ...

  5. java自带BASE64工具进行图片和字符串转换

    java自带BASE64工具进行图片和字符串转换 import java.io.File; import java.io.FileInputStream; import java.io.FileOut ...

  6. java自带BASE64工具进行图片和字符串转换【转】

    java自带BASE64工具进行图片和字符串转换 import java.io.File; import java.io.FileInputStream; import java.io.FileOut ...

  7. python base64 编解码,转换成Opencv,PIL.Image图片格式

    二进制打开图片文件,base64编解码,转成Opencv格式: # coding: utf-8 import base64 import numpy as np import cv2 img_file ...

  8. Python技巧——list与字符串互相转换

    Python技巧——list与字符串互相转换   在Python的编程中,经常会涉及到字符串与list之间的转换问题,下面就将两者之间的转换做一个梳理. 1.字符串转换成list 命令:list() ...

  9. 【转】Python 字符串大小写转换

    转载自:python 中字符串大小写转换 一.pyhton字符串的大小写转换, 常用的有以下几种方法: 1.对字符串中所有字符(仅对字母有效)的大小写转换,有两个方法: print 'just to ...

随机推荐

  1. T-SQL 基础

    什么是T-SQL语言? T-SQL语言是SQL语言的扩展和增强,是与SQL server交流沟通的语言之一. T-SQL的组成部分,数据定义语言-DDL(对数据库对象的创建和管理),数据控制语言-DC ...

  2. Map 知识整理

    首先是HashMap的学习,理解散列的概念以及相关的实现,并且会学习HashMap的源码,理解为什么HashMap的速度如此之快. 声明:参考到的资料在下方列出. 1.<Java编程思想> ...

  3. Java中类的构造方法

    constructor:构造函数. 在创建对象的时候,对象成员可以由构造函数方法进行初始化. new对象时,都是用构造方法进行实例化的: 例如:Test test = new Test("a ...

  4. -save和-save-dev 区别(转载)

    本文原文地址:https://www.limitcode.com/detail/59a15b1a69e95702e0780249.html 回顾 npm install 命令 最近在写Node程序的时 ...

  5. elasticsearch技术解析与实战(一) 入门和索引

    GET _cat/nodes GET _cat/health GET _cat/shards GET http://10.37.84.124:9200/secisland?pretty { " ...

  6. drone 1.0 新的定时任务界面&&构建任务支持重启

    drone 1.0 的定时任务是一个不错的功能,早期的版本是必须使用cron 表达式的 最近发布的版本支持通过配置就可以了,很方便,只是目前比较简单的,支持小时. 天.周.月.年的模式 环境准备 do ...

  7. java_架构与模式

    框架有哪些?C++语言的QT.MFC.gtk,Java语言的SSH,php语言的 smarty(MVC模式),python语言的django(MTV模式)等等设计模式有哪些?工厂模式.适配器模式.策略 ...

  8. 谈谈 SOA

    为什么要 讨论 SOA 呢 ? 请参考我写的另一篇文章 <论 微服务 和 Entity Framework 对 数据 的 割裂>    https://www.cnblogs.com/KS ...

  9. spark机器学习

    多层感知器(MLP) from __future__ import print_function from pyspark.ml.classification import MultilayerPer ...

  10. thinkphp5 查询的数据是对象时,获取原始数据方法

    获取原始数据 如果你定义了获取器的情况下,希望获取数据表中的原始数据,可以使用: $user = User::get(1); // 通过获取器获取字段 echo $user->status; / ...