这样做的简单方法是使用像

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文件相关推荐

  1. python 读取二进制数据到可变缓冲区中

    想直接读取二进制数据到一个可变缓冲区中,而不需要做任何的中间复制操作.或者你想原地修改数据并将它写回到一个文件中去. 为了读取数据到一个可变数组中,使用文件对象的readinto() 方法.比如 im ...

  2. maven没有resource文件夹_maven项目中没有resource文件夹的问题

    之前使用eclipse创建maven项目,文件夹都是建好的,这几次创建,都没有resource文件夹,需要手动创建resource. 现象描述 在eclipse中,创建maven项目有两种方式: 一种 ...

  3. wp文件转shp_完美实现从mapGIS文件转换成ArcGIS中shp格式文件

    完美实现从 mapGIS 文件转换成 ArcGIS 中 shp 格式文件 最近经苦战实验,终于找到如何完美实现从 mapGIS 文件转换成 ArcGIS 中 shp 格式文件.步骤如下(各步骤中细节操 ...

  4. java中 exe是什么文件_从文件位置运行Java中的.exe文件

    从文件位置运行Java中的.exe文件 我必须从我的Java程序打开一个.exe文件. 所以我试着下面的代码第一. Process process = runtime.exec("c:\\p ...

  5. python读取数据的函数详解_你了解文件缓存机制吗?磁盘文件如何读写?Python中open函数详解...

    我们知道,在使用Python打开一个文件时,一般使用的是open()函数,但是你真正了解这个函数么?文件打开后如何进行缓存?对于大文件它是如何处理的?今天,小编带你来详细了解一下-- Python如何 ...

  6. Python读取IRIS数据集并转换为PaddlePaddle中使用的reader

    背景信息 IRIS数据集是机器学习领域常用的一种数据集,但是PaddlePaddle预置数据集中并未包含,因此本文实现了使用Python读取下载的iris数据集文本文件并将其转换为reader的代码. ...

  7. python html转TXT python读取html指定区域文本内容转成txt文件

    1.首先,通过python,去将读取遍历程序目录文件夹中,[html]文件夹里面的文件.文件 夹以及子目录.子目录里面的 ,获取到该目录下所有的[.html]文件后,返回一个list对象 2.遍历完成 ...

  8. python读取遥感 dat_基于python批量处理dat文件及科学计算方法详解

    摘要:主要介绍一些python的文件读取功能,文件内容修改,文件名后缀更改等操作. 批处理文件功能 import os path1 = 'C:\\Users\\awake_ljw\\Documents ...

  9. python 检查文件是否存在_Python中如何判断文件是否存在?

    这里介绍三种判断文件或文件夹是否存在的方法,分别使用os模块.Try语句.pathlib模块. 1.使用os模块 os模块中的os.path.exists()方法用于检验文件是否存在. import ...

  10. python读取与写入json+csv变成coco的json文件+安装labelme

    一.python读取与输出json 1.python字典和json互转这里用json.dumps,还原则用json.loads,dumps以后就变为字符串了 import json# info = { ...

最新文章

  1. mysql查询时调用函数_【性能测试】性能测试时对Mysql数据库的慢查询监控
  2. [LeetCode] Same Tree
  3. kafka Windows客户端Linux服务器---转
  4. pythonweb接口优化_记一次 Python Web 接口优化
  5. 全球及中国洗涤剂行业十四五总体规模与盈利状况分析报告2022版
  6. java iterable_太糟糕了,Java 8没有Iterable.stream()
  7. clion编译器解决undefined reference to symbol ‘shm_open@@GLIBC_2.2.5‘
  8. Unity3D-GUI初试
  9. MATLAB 画图 字符串连接表示 plot参数
  10. 【并查集】亲戚(Relations)
  11. 下载全球高清卫星影像地图
  12. 软路由WIFI的方案,pcie网卡和硬件无线AP那种最稳定靠谱?
  13. Windows Sever 2008 文件夹共享权限
  14. 手动修改dns服务器设置,如何修改DNS设置 修改DNS设置方法【详解】
  15. php短网址生成原理,php 生成短网址原理及代码
  16. 开放平台API接口加密,签名策略
  17. java网络学习之 jca体系概述(12)
  18. 游戏美术设计师需要什么学历背景?主要做什么?
  19. seo与外链绝密技巧珍藏版分享
  20. html5流式布局,流式布局是什么?流式布局详细介绍

热门文章

  1. 论文阅读:Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift
  2. 最短路径Floyd算法图解与C++实现
  3. Matlab常用函数1:numel,unifrnd,repmat
  4. 【K70例程】012SPI1.8寸LCD驱动(SPI)(选配)
  5. 5687. 执行乘法运算的最大分数
  6. Python查看微信共同好友
  7. LVGL学习——动画重复播放,回放
  8. 第四次Scrum冲刺----Life in CCSU
  9. Redis 是单线程还是多线程
  10. 导致403错误的原因和解决方法