当前位置: 首页 > article >正文

python如何对图片或文件的操作

一. base64 与图片的相互转换1. base64 转图片123456789101112131415161718192021importbase64fromioimportBytesIOfromPILimportImage# base64 编码的图像数据示例base64_dataiVBn9DHASKJDjDsdSADSf8lgg# 将 base64 编码的字符串解码为二进制数据binary_database64.b64decode(base64_data)# 将二进制数据转换为 BytesIO 对象bytes_ioBytesIO(binary_data)# 使用 PILPillow加载图像imageImage.open(bytes_io)# 保存图像image.save(output_image.png)print(图像保存成功)2.图片转 base641234567891011121314151617181920importbase64deffile_to_base64(file_path):withopen(file_path,rb) asfile:# 读取文件内容file_datafile.read()# 使用base64编码base64_encodedbase64.b64encode(file_data)# 将bytes对象转换为字符串base64_stringbase64_encoded.decode(utf-8)returnbase64_string# 示例将图片转换为Base64编码image_pathD:/output_image.pngbase64_datafile_to_base64(image_path)# 打印Base64编码print(base64_data)二.图片和像素点的操作1. 读取图片的像素点矩阵, 写入到 json 文件中jpg 一般为3通道, png 一般为 4通道12345678910111213141516171819202122读取图片像素点矩阵, 写入到json文件fromPILimportImageimportnumpy as npimportjson# 打开图片imgImage.open(D:/input_image.png)# 获取图片大小和格式print(img.size, img.format)# 显示图片# img.show()# 获取像素数据pixelsnp.array(img)# 将像素点转为 list 写入文件file_objectopen(D:/why.json,w, encodingutf8)json.dump(pixels.tolist(), file_object, ensure_asciiFalse)2.读取像素矩阵, 生成图片1234567891011121314151617读取像素点矩阵, 生成图片importjsonimportnumpy as npimportcv2file_objectopen(D:/why.json,r, encodingutf8)file_data_strfile_object.read()file_object.close()matrix_datajson.loads(file_data_str)imagenp.array(matrix_data, dtypenp.uint8)print(image.shape)cv2.imwrite(D:/output_image2.jpg, image)三.本地文件和二进制的互相转换1.本地文件转二进制123456789# 本地文件转二进制deffile_binary(path):withopen(path,rb) asfile:binary_datafile.read()returnbinary_datafile_pathD:/input_image.pngbinaryfile_binary(file_path)2.二进制转本地文件12345678910111213141516171819# 本地文件转二进制deffile_binary(path):withopen(path,rb) asfile:binary_datafile.read()returnbinary_data# 二进制写入到本地文件defsave_binary_file(path, binary_data):# 将二进制数据写入文件withopen(path,wb) asfile:file.write(binary_data)file_pathD:/input_image.pngbinaryfile_binary(file_path)to_file_pathD:/output_image.pngsave_binary_file(to_file_path, binary)四.计算文件的 md51.计算本地文件的 md512345678910111213141516171819202122importhashlib# 计算本地文件的 md5 值defcalculate_md5(path):# 打开图像文件withopen(path,rb) as f:# 读取图像数据binary_dataf.read()# 计算 MD5 值md5_hashhashlib.md5(binary_data)md5_valuemd5_hash.hexdigest()returnmd5_value# 图像文件路径file_pathD:/output_image.png# 获取图像的 MD5 值md5calculate_md5(file_path)print(md5)2.计算数据二进制的 md5跟计算本地文件的md5差不多, 只不过传入的是二进制数据而已, 二进制数据除了是从文件中直接读取的, 也有可能是从数据库中获取, 比如 mongo, 所以也要注意一下编码问题。12345678910111213141516171819202122232425262728importhashlib# 本地文件转二进制deffile_binary(path):withopen(path,rb) asfile:binary_datafile.read()returnbinary_data# 计算二进制数据的 md5defcalculate_md5(binary_data):# 检查是否是 Unicode 字符串# (因为二进制数据除了是从文件中直接读取的, 也有可能是从数据库中获取, 比如 mongo)ifisinstance(binary_data,str):# 将 Unicode 字符串编码为字节对象binary_databinary_data.encode(utf-8)md5_hashhashlib.md5(binary_data)returnmd5_hash.hexdigest()file_pathD:/input_image.pngbinaryfile_binary(file_path)# 计算 MD5 值md5calculate_md5(binary)print(md5)3.windows 获取本地文件的 md51certutil-hashfile test.pdf MD54.linux 获取本地文件的 md51md5sum test.pdf五.下载网络文件到本地常用的一种爬虫方法任何类型的文件都可以1234567importurllib.requestimporturllib.parseurlhttps://t7.baidu.com/it/u1595072465,3644073269fm193fGIFurllib.request.urlretrieve(url,D:/abc.jpg)六.循环建立多层文件夹直接建立多层文件夹, 如果已经存在的话, 则忽视12345defcreate_folder_if_not_exists(folder_path):# 检查文件夹是否存在ifnotos.path.exists(folder_path):# 如果不存在创建文件夹os.makedirs(folder_path)总结以上为个人经验希望能给大家一个参考

相关文章:

python如何对图片或文件的操作

一. base64 与图片的相互转换1. base64 转图片123456789101112131415161718192021import base64from io import BytesIOfrom PIL import Image# base64 编码的图像数据(示例)base64_data "iVBn9DHASKJDjDsdSADSf8lgg"# 将 base64 编码的字符串…...

Qwen3.5-9B-AWQ-4bit部署教程:基于CSDN GPU平台的7860端口快速访问指南

Qwen3.5-9B-AWQ-4bit部署教程:基于CSDN GPU平台的7860端口快速访问指南 1. 模型介绍 Qwen3.5-9B-AWQ-4bit是一个支持图像理解的多模态模型,能够结合上传图片与文字提示词,输出中文分析结果。这个量化版本特别适合处理以下任务: …...

忍者像素绘卷效果评测:16-Bit美学下角色辨识度与动作张力表现

忍者像素绘卷效果评测:16-Bit美学下角色辨识度与动作张力表现 1. 评测概述 忍者像素绘卷是一款基于Z-Image-Turbo深度优化的图像生成工具,专为16-Bit复古风格设计。这款工具将传统忍者文化与像素艺术完美结合,创造出独特的视觉体验。本次评…...

Wan2.1-umt5模型服务监控:使用Prometheus与Grafana搭建观测体系

Wan2.1-umt5模型服务监控:使用Prometheus与Grafana搭建观测体系 当你把一个模型服务部署到生产环境,最怕的是什么?是半夜突然收到报警说服务挂了,还是用户反馈说响应变慢了,你却一头雾水,不知道问题出在哪…...

Pixel Couplet Gen 效果增强:利用OpenCV进行生成结果的后处理与美化

Pixel Couplet Gen 效果增强:利用OpenCV进行生成结果的后处理与美化 1. 引言:从文字到视觉作品的蜕变 春节将至,许多商家和个人都开始准备节日装饰和营销素材。传统的对联设计往往需要专业设计师参与,耗时耗力。Pixel Couplet G…...

IDE高效开发配置:使用IDEA进行cv_resnet101_face-detection模型Python后端调试

IDE高效开发配置:使用IDEA进行cv_resnet101_face-detection模型Python后端调试 你是不是也遇到过这种情况?在本地电脑上写好了人脸检测模型的代码,一跑起来,要么是速度慢得像蜗牛,要么是内存直接爆掉。想用服务器的GP…...

Go语言怎么做分布式缓存_Go语言分布式缓存教程【经典】

用 redis.Client 连集群或哨兵,而非单节点;哨兵用 NewFailoverClient 并传 MasterName 和全部哨兵地址,集群用 NewClusterClient 并设 Timeout 与 MaxRetries。用 redis.Client 连集群还是单节点?别硬套文档示例Go 里最常踩的坑是…...

WarcraftHelper终极指南:5个简单步骤让魔兽争霸3在Windows 11完美运行

WarcraftHelper终极指南:5个简单步骤让魔兽争霸3在Windows 11完美运行 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为魔兽争霸3在现…...

ViTables终极指南:快速掌握HDF5数据可视化与分析神器

ViTables终极指南:快速掌握HDF5数据可视化与分析神器 【免费下载链接】ViTables ViTables, a GUI for PyTables 项目地址: https://gitcode.com/gh_mirrors/vi/ViTables 想要高效管理和分析海量科学数据?面对复杂的HDF5文件结构感到无从下手&…...

Android Framework开发必备:手把手教你为Android Studio配置AOSP源码跳转与调试环境

Android Framework深度开发实战:构建AOSP源码调试环境全指南 当你在Android系统层开发中遇到一个神秘的崩溃日志,或是需要修改某个核心服务的行为时,能否像调试应用层代码一样在Framework源码中自由跳转、设置断点?本文将带你从零…...

Maven 3.8.1升级后,公司内网私服(HTTP)连不上了?别慌,这4种方法帮你搞定

Maven 3.8.1升级后HTTP私服访问失败的深度解决方案 最近不少企业开发团队在将Maven升级到3.8.1版本后,突然发现原本正常工作的内部私有仓库无法访问了,控制台出现"Blocked mirror for repositories"的错误提示。这实际上是Maven 3.8.1引入的一…...

Ostrakon-VL-8B从零开始:17GB大模型本地加载、OCR识别与陈列分析全指南

Ostrakon-VL-8B从零开始:17GB大模型本地加载、OCR识别与陈列分析全指南 你是不是也遇到过这样的场景?走进一家超市,想快速了解货架上的商品种类和摆放情况;或者管理一家餐厅,需要检查后厨的卫生和食材摆放是否合规。传…...

ESP32新手避坑:明明装了工具链,为啥还报‘xtensa-esp32-elf-gcc: Command not found‘?

ESP32开发环境搭建:彻底解决工具链路径失效问题 刚接触ESP32开发的工程师们,是否遇到过这样的场景:明明按照官方文档一步步执行了install.sh和export.sh,终端也显示工具链已成功安装并添加到PATH,但当切换到项目目录执…...

PPTAgent深度解析:如何让AI真正理解你的演示需求

PPTAgent深度解析:如何让AI真正理解你的演示需求 【免费下载链接】PPTAgent An Agentic Framework for Reflective PowerPoint Generation 项目地址: https://gitcode.com/gh_mirrors/pp/PPTAgent 你是否曾经对着空白的幻灯片页面发呆,不知从何开…...

忍者像素绘卷:天界画坊C语言集成开发指南:打造高性能图像生成引擎

忍者像素绘卷:天界画坊C语言集成开发指南 1. 为什么需要C语言高性能引擎 在游戏开发和数字艺术创作领域,像素画生成一直是个有趣但计算密集的任务。传统Python实现的生成器在处理高分辨率像素画时常常力不从心,特别是当需要实时生成或批量处…...

StructBERT在智能招聘中的应用:候选人简历与JD关键词语义匹配效果展示

StructBERT在智能招聘中的应用:候选人简历与JD关键词语义匹配效果展示 1. 智能招聘的痛点与解决方案 招聘过程中最耗时的环节是什么?很多HR会告诉你:是简历筛选。面对海量简历,如何快速准确地找到与职位要求最匹配的候选人&…...

CSS如何处理溢出隐藏_使用overflow-hidden与盒模型

overflow: hidden 失效主因是父容器无明确宽高或子元素脱离文档流;需触发BFC(如display: flow-root)、避免absolute/floating、注意iOS Safari兼容性及box-sizing对可用空间的影响。overflow: hidden 为什么没生效最常见的原因是父容器没有设…...

Python Selenium怎么定位元素_By.XPATH与By.CSS_SELECTOR操作DOM节点

XPath定位失败主因是路径脆弱、上下文变化或节点未就绪;应避免绝对路径,优先用CSS,动态内容需显式等待,iframe须先切换,复杂逻辑才用XPath。By.XPATH 定位失败的常见原因不是 XPath 写得不够“高级”,而是多…...

万象熔炉 | Anything XL开源实践:模型量化(AWQ/GGUF)轻量部署可行性验证

万象熔炉 | Anything XL开源实践:模型量化(AWQ/GGUF)轻量部署可行性验证 1. 项目背景与意义 万象熔炉 | Anything XL 是一款基于 Stable Diffusion XL Pipeline 开发的本地图像生成工具,它能够直接加载 safetensors 单文件权重&…...

Jimeng LoRA多版本智能排序测试:告别混乱,直观选择最佳训练迭代

Jimeng LoRA多版本智能排序测试:告别混乱,直观选择最佳训练迭代 1. 项目背景与核心价值 在AI图像生成领域,LoRA(Low-Rank Adaptation)技术已经成为模型微调的主流方案。然而,当我们需要测试不同训练阶段的…...

AI生成代码真的可靠吗?揭秘可维护性衰减的72小时临界点及4步修复法

第一章:AI生成代码真的可靠吗?揭秘可维护性衰减的72小时临界点及4步修复法 2026奇点智能技术大会(https://ml-summit.org) 大量工程实践表明,AI生成的代码在交付后第72小时左右进入可维护性断崖式衰减期——此时原始提示上下文已丢失、变量…...

如何在MongoDB GridFS中进行按文件大小(length)范围的查询

GridFS 的 length 字段存储在 fs.files 集合中,单位为字节,类型为 NumberLong 或 int;查询需直接操作 db.fs.files 集合,使用标准 MongoDB 语法,如 db.fs.files.find({ length: { $gte: 1024 } })。GridFS 的 length 字…...

Python如何快速处理NumPy数组的浮点精度_使用astype转换

astype转换精度丢失是预期行为,因float32仅约7位有效十进制数字,转换是二进制重编码而非四舍五入;需改存储类型时才用,显示精度应使用round或格式化。astype 转换后精度丢失不是 bug,是预期行为用 astype 强制转成 np.…...

AI写代码真的安全吗?(2024代码生成漏洞图谱首次公开:含12个CVE级演化断裂点)

第一章:AI写代码真的安全吗?(2024代码生成漏洞图谱首次公开:含12个CVE级演化断裂点) 2026奇点智能技术大会(https://ml-summit.org) 当开发者将关键业务逻辑交由Copilot、CodeWhisperer或通义灵码生成时,…...

AI生成代码的「可信边界」在哪里?2026奇点大会联合MIT、CNCF发布《AI代码生产安全基线V1.0》:含17项静态检测阈值、3类不可自动化修复缺陷清单

第一章:AI生成代码的「可信边界」本质探源 2026奇点智能技术大会(https://ml-summit.org) 「可信边界」并非指模型输出是否语法正确,而是其行为在真实工程语境中是否可预测、可验证、可归责。这一边界根植于训练数据的隐式契约、推理过程的不可观测性&…...

C语言到底能干啥我列举了8种经典案例

C语言还没死,大家都说它老了,可为啥啥都绕不开它。 我最近翻了好多资料,也问了几个做嵌入式和内核的朋友,不是他们懒,不想换新语言,而是换不了——有些地方,真没得选。 比如Linux内核&#xff0…...

Qwen3-Reranker-8B长文本处理技巧:突破32K上下文限制

Qwen3-Reranker-8B长文本处理技巧:突破32K上下文限制 1. 引言 处理长文本一直是AI模型面临的一大挑战。传统的文本处理模型往往受限于上下文长度,当面对几十页的文档、长篇报告或大量数据时,往往力不从心。Qwen3-Reranker-8B的出现改变了这…...

Qwen2.5-7B-Instruct出版行业应用:图书简介+营销推文+审校意见生成

Qwen2.5-7B-Instruct出版行业应用:图书简介营销推文审校意见生成 如果你在出版行业工作,每天是不是都在为这些事头疼?一本新书要上市了,得写几百字的简介,既要吸引人又不能剧透;社交媒体上得发推文&#x…...

C/C++基础语法复习(一):C++与C语言的区别,主要有这些

和C的区别 1.概念: C 是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程。 C 被认为是一种中级语言,它综合了高级语言和低级语言的特点。 C的很多基础语法跟C差不多。 2. 函数默认…...

低成本搭建厘米级定位:用树莓派+ZED-F9P+开源电台DIY你的RTK移动站

低成本搭建厘米级RTK定位系统:树莓派与开源硬件的完美组合 在无人机航测、农业自动导航和机器人开发领域,厘米级定位不再是遥不可及的梦想。如今,借助开源硬件和软件生态,个人开发者完全可以用不到专业设备十分之一的成本搭建属于…...