1. 基本环境

  • py2: python2.7.13
  • py3: python3.6.2
  • PIL: pip(2/3) install pillow, PIL库已不再维护,而pillow是PIL的一个分支,如今已超越PIL

2. Convert PIL.Image to Base64 String

  • py2 :先使用CStringIO.StringIO把图片内容转为二进制流,再进行base64编码
# -*- coding: utf-8 -*-import base64
from cStringIO import StringIO# pip2 install pillow
from PIL import Imagedef image_to_base64(image_path):img = Image.open(image_path)output_buffer = StringIO()img.save(output_buffer, format='JPEG')binary_data = output_buffer.getvalue()base64_data = base64.b64encode(binary_data)return base64_data
  • py3:python3中没有cStringIO,对应的是io,但却不能使用io.StringIO来处理图片,它用来处理文本的IO操作,处理图片的应该是io.BytesIO
import base64
from io import BytesIO# pip3 install pillow
from PIL import Image# 若img.save()报错 cannot write mode RGBA as JPEG
# 则img = Image.open(image_path).convert('RGB')
def image_to_base64(image_path):img = Image.open(image_path)output_buffer = BytesIO()img.save(output_buffer, format='JPEG')byte_data = output_buffer.getvalue()base64_str = base64.b64encode(byte_data)return base64_str

3. Convert Base64 String to PIL.Image

  • py2:
# -*- coding: utf-8 -*-import re
import base64
from cStringIO import StringIOfrom PIL import Imagedef base64_to_image(base64_str, image_path=None):base64_data = re.sub('^data:image/.+;base64,', '', base64_str)binary_data = base64.b64decode(base64_data)img_data = StringIO(binary_data)img = Image.open(img_data)if image_path:img.save(image_path)return img
  • py3:
import re
import base64
from io import BytesIOfrom PIL import Imagedef base64_to_image(base64_str, image_path=None):base64_data = re.sub('^data:image/.+;base64,', '', base64_str)byte_data = base64.b64decode(base64_data)image_data = BytesIO(byte_data)img = Image.open(image_data)if image_path:img.save(image_path)return img

4. 参考网址

[1] https://stackoverflow.com/questions/16065694/is-it-possible-to-create-encodeb64-from-image-object

[2] https://stackoverflow.com/questions/31826335/how-to-convert-pil-image-image-object-to-base64-string

[3] https://stackoverflow.com/questions/26070547/decoding-base64-from-post-to-use-in-pil

OCR-PIL.Image与Base64 String的互相转换相关推荐

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

    Python PIL.Image和OpenCV图像格式相互转换 二进制打开图片文件,base64编解码转成Opencv格式: # coding: utf-8 import base64 import ...

  2. android bitmap string,Android Bitmap到Base64字符串(Android Bitmap to Base64 String)

    Android Bitmap到Base64字符串(Android Bitmap to Base64 String) 如何将一个大的Bitmap(用手机相机拍摄的照片)转换为Base64 String? ...

  3. csharp:Convert Image to Base64 String and Base64 String to Image

    /// <summary>/// 图像转成二进制数组/// </summary>/// <param name="imageIn"></p ...

  4. c++ 解析从浏览器端传过来的图像base64编码,并转换成opencv识别的格式

    from: c++ 解析从浏览器端传过来的图像base64编码,并转换成opencv识别的格式 #include <cstdint> #include <fstream> #i ...

  5. java base64字符 转图片_JAVA实现图片与base64字符串之间的转换详解

    import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import ...

  6. Base64处理byte[ ]和base64字符串之间的转换

    1.工具类 import org.apache.commons.codec.binary.Base64; public class UtilHelper { //base64字符串转byte[] pu ...

  7. Java接受前端的base64,转换失败。base64转图片互相转换

    spring boot前后端vue,base64转图片互相转换 vue就不展示了,下边只展示Java中互相转换的例子. Java实现图片转化成base64字符串 //图片转化成base64字符串 pu ...

  8. C#中char[]与string之间的转换

    C#中char[]与string之间的转换 原文:C#中char[]与string之间的转换 string 转换成 Char[] string ss = "abcdefg"; ch ...

  9. 第三次学JAVA再学不好就吃翔(part51)--String类的转换功能

    学习笔记,仅供参考 文章目录 String类 String类的转换功能 getBytes方法 toCharArray方法 valueOf方法 toLowerCase方法 toUpperCase方法 c ...

最新文章

  1. android与PC,C#与Java 利用protobuf 进行无障碍通讯【Socket】
  2. urllib.parse
  3. Lesson 12.4 逻辑回归建模实验
  4. Redis提供的持久化机制(RDB和AOF)
  5. 【Python】绘制哆啦A梦
  6. c语言打开文件出现分段故障,c fclose() 导致分段故障_segmentation-fault_开发99编程知识库...
  7. MvcMusicStore学习中常出现的一个BUG
  8. 纠正存储 dict 的元素前是计算 key 的 hash 值?
  9. Sprin boot 加载位置顺序
  10. python中的zip函数详解_python中的 zip函数详解
  11. 【ArcGIS微课1000例】0027:ArcGIS属性表(dbf)转Excel的4中方法
  12. 什么是JavaSE,写给第一次接触Java的人
  13. 中国低线城市洞察综述
  14. Flowable入门系列文章39 - 网关 01
  15. 罕见霜降胡杨照片,太美了!
  16. Latex添加一条水平线
  17. ios13 微信提示音插件_ios13微信提示音如何进行更改
  18. 蓝队在攻防比赛中常用的防护手段汇总
  19. 上海交通大学学生生存手册
  20. Spring的ioc控制反转

热门文章

  1. Clinicast让癌症治疗不那么昂贵
  2. 20160626001 O2O Website
  3. 企业级nginx服务优化(一)
  4. java动态代理(JDK和cglib)
  5. J-4 Java语言基础
  6. 转:WinForm程序中两份mdf文件问题的解决方法
  7. archlinux包管理器--pacman常用命令
  8. poj-2752 Seek the Name, Seek the Fame **
  9. 企业级UML/MDA工具Trufun 2007系列发布!
  10. Duff in Love