简介

在实际项目中,可能需要对图片进行大小的压缩,较为常见的方法则是将图片转换为base64的编码,本文就python编码和解码图片做出一定的介绍。

代码

import base64
import os
import sys def base64_to_img(img_path, base64_path):
"""
根据base64生成图片.
:param img_path: 生成的图片路径
:param base64_path: 图片的base64文件
:returns: None
"""
try:
# 截取uri的data:image/png;base64后端的uri
with open(base64_path, mode="r") as f:
content = ""
for line in f:
content = content + line
img_uri = content.split(",")[1]
imgdata = base64.b64decode(img_uri)
with open(img_path, mode="wb") as f:
f.write(imgdata)
except Exception as e:
print(f"base64_to_img error:{e}") def img_to_base64(img_path):
"""
将图片转换成base64编码并写入到对应名称的txt文件
:param img_path: 需要编码的图片
:returns: 编码后的字节数据
"""
try:
file_name = os.path.basename(img_path).split(".")
txt_path = os.path.join(os.path.dirname(img_path), file_name[0] + ".txt")
with open(img_path, 'rb') as f, open(txt_path, mode="wb") as w_f:
img_data = f.read()
uri = base64.b64encode(img_data)
img_show = "data:image/jpeg;base64," + uri.decode('utf-8')
w_f.write(img_show.encode("utf-8"))
# 如果需要在浏览器展示,需要在uri前面添加:data:image/jpeg;base64,
return uri
except Exception as e:
print(f"img_to_base64 error:{e}") if __name__ == "__main__":
img_path = sys.argv[1]
try:
base64_path = sys.argv[2]
base64_to_img(img_path, base64_path)
except IndexError:
if os.path.exists(img_path):
img_to_base64(img_path)
else:
print("image not exists")

使用方法

python img_base64.py [img_path] [txt_path]

img_path: 需要生成base64编码的图片路径 / base64需要生成图片的路径

txt_path: base64需要生成图片的base64 uri编码文件的路径

  • 会自动识别进行base64转图片还是图片转base64

    图片转base64编码会自动生成对应图片

python base64编码和解码图片的更多相关文章

  1. Kotlin/Java Base64编码和解码(图片、文件)

    原文: Kotlin/Java Base64编码和解码(图片.文件) | Stars-One的杂货小窝 最近在项目中使用到了Base64编码和解码,便是稍微写篇文章记录一下 PS:本文代码都是使用Ko ...

  2. Python base64编码,转图片

    我在做火车票抢票器的时候遇到一个问题,就是验证码提取的:一般验证码都是一些http请求的url,但是火车票网站遇到了我没有见过的以data:image/jpg;base64开头的字符串.现在我们就用P ...

  3. Java利用Base64编码和解码图片文件

    1.编码与解码代码如下所示: import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import jav ...

  4. android Java BASE64编码和解码二:图片的编码和解码

    1.准备工作 (1)在项目中集成 Base64 代码,集成方法见第一篇博文:android Java BASE64编码和解码一:基础 (2)添加 ImgHelper 工具类 package com.a ...

  5. Python中进行Base64编码和解码

    Base64编码 广泛应用于MIME协议,作为电子邮件的传输编码,生成的编码可逆,后一两位可能有“=”,生成的编码都是ascii字符.优点:速度快,ascii字符,肉眼不可理解缺点:编码比较长,非常容 ...

  6. Java对网络图片/本地图片转换成Base64编码和解码

    一.将本地图片转换成Base64编码字符串 /** * 将本地图片转换成Base64编码字符串 * * @param imgFile 图片目录路径 * @return */ public static ...

  7. Python Base64 编码

    0x00 Base64简介 0x01 常用场景举例 0x02 编.解码流程 0x03 Python中Base64编码与解码 0x00 Base64简介 我们知道在计算机中任何数据都是按ascii码存储 ...

  8. BASE64编码和解码(VC源代码) 并 内存加载 CImage 图像

      BASE64可以用来将binary的字节序列数据编码成ASCII字符序列构成的文本.完整的BASE64定义可见 RFC1421和 RFC2045.编码后的数据比原始数据略长,为原来的4/3.在电子 ...

  9. js的Base64编码与解码

    js的Base64编码与解码 pc和手机app项目中,经常需要将手机自带的表情图片转换特定的编码格式与后台进行交互. Base64其实是一种简单的置换加密方式,但是BASE64的用处往往并不是为了防止 ...

随机推荐

  1. Vue的Vuex的使用

    一.Vuex是什么? 1:Vuex是一个专为vue.js应用程序开发的状态管理模式,核心就是一个store仓库,采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化 ...

  2. 104_Power Query 数据库条件查询

    博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载 1.应用场景 底层数据在数据库(sql server数据库,其他数据库同理,下文不再说明.)中,Excel中有查询的字段,需要 ...

  3. Flask框架实现登录注册功能(mysql数据库)

    前言: 本例使用Flask框架完成登录和注册操作,包括前端(index.html,regist.html)和后端(app.py)两部分,前端页面不过多介绍,直接进入后端部分: 逻辑思路: 登录部分:运 ...

  4. css属性补充与JS数据类型

    目录 溢出属性(overflow) 定位(position) z-index属性 opacity不透明度 JavaScript简介 变量与注释 数据类型 数值(Number) 字符串(String) ...

  5. falcon-eye-本机系统监控WebUI

    falcon-eye是一个简单的单机版基于WebUI的Linux系统监控工具. 安装falcon-eye root@localhost:~# mkdir falcon-eye root@localho ...

  6. Yaml中特殊符号"| > |+ |-"的作用

    "|",保留每行尾部的换行符\n. ">",删除每行尾部的换行符\n,则看似多行文本,则在程序中会将其视为一行. include_newlines: | ...

  7. [漏洞复现] [Vulhub靶机] OpenSSL Heartbleed Vulnerability (CVE-2014-0160)

    免责声明:本文仅供学习研究,严禁从事非法活动,任何后果由使用者本人负责. 0x00 背景知识 传输层安全协议SSL 安全套接字协议SSL(Secure Sockets Layer),及其继任者传输层安 ...

  8. 『忘了再学』Shell基础 — 22、主要的环境变量配置文件说明

    目录 1.source命令 2.Linux系统中环境变量配置文件 (1)登录时生效的环境变量配置文件 (2)/etc/profile环境变量配置文件 (3)/etc/profile.d/*.sh环境变 ...

  9. Centos免密登陆

    证书登录: 这里说的证书其实就是密钥. 在非对称加密中, 密钥分为公钥和私钥. 私钥, 即密钥所有人持有. 公钥则公布给他人. 公钥和私钥成对使用, 互相解密. 公钥加密数据只能用私钥解密; 私钥加密 ...

  10. 本地创建的jupyter notebook 无法连接本地环境(即不能运行代码)

    参考:https://www.cnblogs.com/damin1909/p/12691147.html 本人所用的python是anaconda下的,由于需求不同,创建了好多个python用于不同的 ...