bmp文件读写
时间: 2023-07-08 20:21:18 浏览: 52
bmp文件是一种图像文件格式,下面是读写bmp文件的简单示例:
读取bmp文件:
```python
import struct
# 打开bmp文件
with open('example.bmp', 'rb') as f:
# 读取bmp文件头
bmp_header = f.read(54)
# 提取图像宽度、高度、位深、数据起始位置等信息
width, height = struct.unpack('<ii', bmp_header[18:26])
bit_depth = struct.unpack('<h', bmp_header[28:30])[0]
data_offset = struct.unpack('<i', bmp_header[10:14])[0]
# 读取图像数据
f.seek(data_offset)
if bit_depth == 24:
data = f.read(width * height * 3)
elif bit_depth == 32:
data = f.read(width * height * 4)
else:
raise ValueError('Unsupported bit depth: %d' % bit_depth)
```
写入bmp文件:
```python
import struct
# 创建一个24位深度的bmp文件
width, height = 512, 512
bit_depth = 24
data_offset = 54
data_size = width * height * bit_depth // 8
file_size = data_size + data_offset
# 写入bmp文件头
bmp_header = struct.pack('<ccihhiiihhiiiiihh', b'B', b'M', file_size, 0, 0, data_offset,
40, width, height, 1, bit_depth, 0, data_size, 0, 0, 0, 0)
with open('output.bmp', 'wb') as f:
f.write(bmp_header)
# 写入图像数据
for y in range(height):
for x in range(width):
r, g, b = x % 256, y % 256, (x + y) % 256
f.write(bytes([b, g, r]))
```
注意:以上代码仅作为bmp文件读写的简单示例,实际应用中需要根据具体的需求进行修改和优化。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)