python读取bmp文件,在python 3中使用.bmp文件
这样做的简单方法是使用像
PIL/Pillow这样的第三方图像处理库.代码非常简单,您可以在几分钟内从
Image模块文档中的示例中找到它…
但是,如果您不允许这样做,那么让我们看一下如何手动执行此操作.
首先,BMP不是文本文件格式,它是二进制格式.这意味着你必须以二进制模式阅读它.并且你不能“逐行”地阅读它,因为它没有要读取的文本行.由于bytes对象不可变,因此您可能希望将其复制到bytearray中以便使用.所以:
with open('spam.bmp', 'rb') as f:
data = bytearray(f.read())
接下来,您需要解析BMP文件格式.我假设练习的要点是弄清楚如何自己做,所以我会给你一个链接到Wikipedia’s article,它比Microsoft文档更好地描述它,你可以从那里开始.
标准库中的struct模块对于解释标题非常有用;使用struct.unpack_from(‘< L',数据,偏移)读取32位小端数比读取数据[offset],数据[offset 1]等更容易并重新组合它们要容易得多成32位数. 我猜你可以忽略BMP压缩的所有选项 – 否则,这将是一个太难的任务.实际上,您可能只是假设所有标头都将指定最常见的变体,并且仅指定代码.但是你可能想问你的老师对此的反馈. 现在,一旦你找到了BMP的“像素阵列”部分,并且你已经想出如何从DIB标题解释它,你可以通过设置所需的位置将像素设置为白色. bytearray的适当索引.例如,它可能会变得如此简单:
pos = pixel_array_offset + row_size * y + pixel_size * x
data[pos:pos+3] = 255, 255, 255
最后,将红色像素更改为白色后,可以使用以下方法保存:
with open('eggs.bmp', 'wb') as f:
f.write(data)
python读取bmp文件,在python 3中使用.bmp文件相关推荐
- python 读取二进制数据到可变缓冲区中
想直接读取二进制数据到一个可变缓冲区中,而不需要做任何的中间复制操作.或者你想原地修改数据并将它写回到一个文件中去. 为了读取数据到一个可变数组中,使用文件对象的readinto() 方法.比如 im ...
- maven没有resource文件夹_maven项目中没有resource文件夹的问题
之前使用eclipse创建maven项目,文件夹都是建好的,这几次创建,都没有resource文件夹,需要手动创建resource. 现象描述 在eclipse中,创建maven项目有两种方式: 一种 ...
- wp文件转shp_完美实现从mapGIS文件转换成ArcGIS中shp格式文件
完美实现从 mapGIS 文件转换成 ArcGIS 中 shp 格式文件 最近经苦战实验,终于找到如何完美实现从 mapGIS 文件转换成 ArcGIS 中 shp 格式文件.步骤如下(各步骤中细节操 ...
- java中 exe是什么文件_从文件位置运行Java中的.exe文件
从文件位置运行Java中的.exe文件 我必须从我的Java程序打开一个.exe文件. 所以我试着下面的代码第一. Process process = runtime.exec("c:\\p ...
- python读取数据的函数详解_你了解文件缓存机制吗?磁盘文件如何读写?Python中open函数详解...
我们知道,在使用Python打开一个文件时,一般使用的是open()函数,但是你真正了解这个函数么?文件打开后如何进行缓存?对于大文件它是如何处理的?今天,小编带你来详细了解一下-- Python如何 ...
- Python读取IRIS数据集并转换为PaddlePaddle中使用的reader
背景信息 IRIS数据集是机器学习领域常用的一种数据集,但是PaddlePaddle预置数据集中并未包含,因此本文实现了使用Python读取下载的iris数据集文本文件并将其转换为reader的代码. ...
- python html转TXT python读取html指定区域文本内容转成txt文件
1.首先,通过python,去将读取遍历程序目录文件夹中,[html]文件夹里面的文件.文件 夹以及子目录.子目录里面的 ,获取到该目录下所有的[.html]文件后,返回一个list对象 2.遍历完成 ...
- python读取遥感 dat_基于python批量处理dat文件及科学计算方法详解
摘要:主要介绍一些python的文件读取功能,文件内容修改,文件名后缀更改等操作. 批处理文件功能 import os path1 = 'C:\\Users\\awake_ljw\\Documents ...
- python 检查文件是否存在_Python中如何判断文件是否存在?
这里介绍三种判断文件或文件夹是否存在的方法,分别使用os模块.Try语句.pathlib模块. 1.使用os模块 os模块中的os.path.exists()方法用于检验文件是否存在. import ...
- python读取与写入json+csv变成coco的json文件+安装labelme
一.python读取与输出json 1.python字典和json互转这里用json.dumps,还原则用json.loads,dumps以后就变为字符串了 import json# info = { ...
最新文章
- mysql查询时调用函数_【性能测试】性能测试时对Mysql数据库的慢查询监控
- [LeetCode] Same Tree
- kafka Windows客户端Linux服务器---转
- pythonweb接口优化_记一次 Python Web 接口优化
- 全球及中国洗涤剂行业十四五总体规模与盈利状况分析报告2022版
- java iterable_太糟糕了,Java 8没有Iterable.stream()
- clion编译器解决undefined reference to symbol ‘shm_open@@GLIBC_2.2.5‘
- Unity3D-GUI初试
- MATLAB 画图 字符串连接表示 plot参数
- 【并查集】亲戚(Relations)
- 下载全球高清卫星影像地图
- 软路由WIFI的方案,pcie网卡和硬件无线AP那种最稳定靠谱?
- Windows Sever 2008 文件夹共享权限
- 手动修改dns服务器设置,如何修改DNS设置 修改DNS设置方法【详解】
- php短网址生成原理,php 生成短网址原理及代码
- 开放平台API接口加密,签名策略
- java网络学习之 jca体系概述(12)
- 游戏美术设计师需要什么学历背景?主要做什么?
- seo与外链绝密技巧珍藏版分享
- html5流式布局,流式布局是什么?流式布局详细介绍
热门文章
- 论文阅读:Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift
- 最短路径Floyd算法图解与C++实现
- Matlab常用函数1:numel,unifrnd,repmat
- 【K70例程】012SPI1.8寸LCD驱动(SPI)(选配)
- 5687. 执行乘法运算的最大分数
- Python查看微信共同好友
- LVGL学习——动画重复播放,回放
- 第四次Scrum冲刺----Life in CCSU
- Redis 是单线程还是多线程
- 导致403错误的原因和解决方法