使用Python可视化有压缩格式的Bitmap(BMP)图像调色板数据

使用Python可视化有压缩格式的Bitmap BMP图像调色板数据

  • 参考文章
  • 一、调色板数据
  • 二、测试代码
  • 三、测试结果

参考文章

  • 有压缩格式的Bitmap(BMP)图像显示调色板数据和图像数据
  • Bitmap(BMP)图像信息分析主要说明带压缩的形式
  • Bitmap(BMP)图像信息验证



一、调色板数据

在这里插入图片描述
在这里插入图片描述

Color Palette Table Info ==> Start:54    Size:688   Group:172
-------------------------------------------Color Palette Table(ARGB)--------------------------------------------00        01        02        03        04        05        06        07        08        09
----------------------------------------------------------------------------------------------------------------
00000000    00FF0000  00FB0000  00F80000  00F70000  00F60000  00F50000  00F40000  00F30000  00F20000  00F10000
00000010    00EB0000  00E50000  00DF0000  00DC0000  00DB0000  00D70000  00D50000  00D30000  00D20000  00D10000
00000020    00CE0000  00C90000  00C80000  00C50000  00C40000  00C00000  00BF0000  00BE0000  00B80000  00B70000
00000030    00B60000  00B30000  00B10000  00AE0000  00AA0000  00A70000  00A40000  009F0000  009A0000  00990000
00000040    00980000  008F0000  008B0000  008A0000  00880000  00870000  00850000  00840000  00800000  00770101
00000050    00750101  00740101  00710101  006F0101  006E0101  006C0101  006A0101  00690101  00680101  00670101
00000060    00660101  00630101  005F0101  005B0101  005A0101  00530101  00510101  004B0101  00440101  00420101
00000070    00410101  003E0101  003B0101  00390101  00380101  00370101  00350101  00340101  00330101  00310101
00000080    002F0101  002D0101  002B0101  002A0101  00290101  00280101  00260101  00250101  00220101  00200101
00000090    001E0101  001C0101  001B0101  001A0101  00190101  00170101  00160101  00150101  00140101  00130101
00000100    00120101  00110101  00100101  000E0101  000D0101  000C0101  000B0101  00090101  00080101  00070101
00000110    00060101  00040101  00020101  00FFFFFF  00F6F6F6  00F3F3F3  00EDEDED  00ECECEC  00E6E6E6  00DADADA
00000120    00D9D9D9  00D6D6D6  00D0D0D0  00C0C0C0  00BEBEBE  00B8B8B8  00AFAFAF  00AEAEAE  00A9A9A9  00A5A5A5
00000130    00989898  008C8C8C  00878787  007F7F7F  007B7B7B  00767676  00757575  00737373  006E6E6E  00686868
00000140    00676767  00616161  00595959  00515151  00505050  004F4F4F  004B4B4B  00474747  00434343  00424242
00000150    00404040  003D3D3D  00333333  00323232  002D2D2D  002A2A2A  00282828  00252525  00242424  001B1B1B
00000160    00181818  00151515  000E0E0E  000D0D0D  00080808  00070707  00050505  00030303  00020202  00010101
00000170    00FFFFFF  00000000
----------------------------------------------------------------------------------------------------------------



二、测试代码

from PIL import Image, ImageDraw
import matplotlib.pyplot as plt
import numpy as np
import datetime
import shutil
import osdef main():#调色板数据colors_tab = \['#00FF0000','#00FB0000','#00F80000','#00F70000','#00F60000','#00F50000','#00F40000','#00F30000','#00F20000','#00F10000','#00EB0000','#00E50000','#00DF0000','#00DC0000','#00DB0000','#00D70000','#00D50000','#00D30000','#00D20000','#00D10000','#00CE0000','#00C90000','#00C80000','#00C50000','#00C40000','#00C00000','#00BF0000','#00BE0000','#00B80000','#00B70000','#00B60000','#00B30000','#00B10000','#00AE0000','#00AA0000','#00A70000','#00A40000','#009F0000','#009A0000','#00990000','#00980000','#008F0000','#008B0000','#008A0000','#00880000','#00870000','#00850000','#00840000','#00800000','#00770101','#00750101','#00740101','#00710101','#006F0101','#006E0101','#006C0101','#006A0101','#00690101','#00680101','#00670101','#00660101','#00630101','#005F0101','#005B0101','#005A0101','#00530101','#00510101','#004B0101','#00440101','#00420101','#00410101','#003E0101','#003B0101','#00390101','#00380101','#00370101','#00350101','#00340101','#00330101','#00310101','#002F0101','#002D0101','#002B0101','#002A0101','#00290101','#00280101','#00260101','#00250101','#00220101','#00200101','#001E0101','#001C0101','#001B0101','#001A0101','#00190101','#00170101','#00160101','#00150101','#00140101','#00130101','#00120101','#00110101','#00100101','#000E0101','#000D0101','#000C0101','#000B0101','#00090101','#00080101','#00070101','#00060101','#00040101','#00020101','#00FFFFFF','#00F6F6F6','#00F3F3F3','#00EDEDED','#00ECECEC','#00E6E6E6','#00DADADA','#00D9D9D9','#00D6D6D6','#00D0D0D0','#00C0C0C0','#00BEBEBE','#00B8B8B8','#00AFAFAF','#00AEAEAE','#00A9A9A9','#00A5A5A5','#00989898','#008C8C8C','#00878787','#007F7F7F','#007B7B7B','#00767676','#00757575','#00737373','#006E6E6E','#00686868','#00676767','#00616161','#00595959','#00515151','#00505050','#004F4F4F','#004B4B4B','#00474747','#00434343','#00424242','#00404040','#003D3D3D','#00333333','#00323232','#002D2D2D','#002A2A2A','#00282828','#00252525','#00242424','#001B1B1B','#00181818','#00151515','#000E0E0E','#000D0D0D','#00080808','#00070707','#00050505','#00030303','#00020202','#00010101','#00FFFFFF','#00000000']#颜色块的大小color_block_height = 100color_block_width  = 100#每行显示颜色数num_columns = 10# 取整的行数num_rows = (len(colors_tab) + num_columns - 1) // num_columns# 创建空的颜色矩阵# color_matrix = np.zeros((num_rows * color_block_height, num_columns * color_block_width, 3), dtype=int) #背景为黑色color_matrix   = np.full((num_rows * color_block_height, num_columns * color_block_width, 3), 255, dtype=int) #背景为黑色# 将颜色填充到矩阵中for i, argb in enumerate(colors_tab):# 将ARGB颜色转化为RGBa = int(argb[1:3], 16)r = int(argb[3:5], 16)g = int(argb[5:7], 16)b = int(argb[7:9], 16)color = [r, g, b]# 计算当前颜色块的位置row = i // num_columnscol = i % num_columns# 填充相应的颜色块区域x0 = row * color_block_heighty0 = (row + 1) * color_block_heightx1 = col * color_block_widthy1 = (col + 1) * color_block_widthcolor_matrix[x0:y0, x1:y1] = color#显示调色板plt.title('Bitmap Color Palette Info') #标题plt.imshow(color_matrix)plt.savefig('Bitmap_Color_Palette_Info.png', dpi=500, bbox_inches="tight") #保存图片plt.show()if __name__ == '__main__':main()



三、测试结果

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/891215.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

「Mac畅玩鸿蒙与硬件49」UI互动应用篇26 - 数字填色游戏

本篇教程将带你实现一个数字填色小游戏,通过简单的交互逻辑,学习如何使用鸿蒙开发组件创建趣味性强的应用。 关键词 UI互动应用数字填色动态交互逻辑判断游戏开发 一、功能说明 数字填色小游戏包含以下功能: 数字选择:用户点击…

html+css+js网页设计 美食 美食家6个页面

htmlcssjs网页设计 美食 美食家6个页面 网页作品代码简单,可使用任意HTML辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作)。 获取源码 1&#xf…

标准库以及HAL库——按键控制LED灯代码

按键控制LED本质还是控制GPIO,和点亮一个LED灯没什么区别 点亮一个LED灯:是直接控制输出引脚,GPIO初始化推挽输出即可 按键控制LED:是按键输入信号从而控制输出引脚,GPIO初始化推挽输出一个引脚以外还得加一个GPIO上拉输入 但是…

Java的list中状态属性相同返回true的实现方案

文章目录 项目背景方案一、for循环实现实现思路 方案二、stream实现实现思路 项目背景 在项目中会遇到list中多个状态判断,状态值相等时,总体返回为true。 方案一、for循环实现 实现思路 遍历list,当出现不一致时,直接跳出循环…

模型选择+过拟合欠拟合

训练误差和泛化误差 训练误差:模型在训练数据上的误差 泛化误差:模型在新数据上的误差 验证数据集:一个用来评估模型好坏的数据集 例如拿出50%的数据作为训练 测试数据集:只能用一次 K则交叉验证 在没有足够数据时使用 算法…

Web安全攻防入门教程——hvv行动详解

Web安全攻防入门教程 Web安全攻防是指在Web应用程序的开发、部署和运行过程中,保护Web应用免受攻击和恶意行为的技术与策略。这个领域不仅涉及防御措施的实现,还包括通过渗透测试、漏洞挖掘和模拟攻击来识别潜在的安全问题。 本教程将带你入门Web安全攻防…

语音识别基础算法——动态时间规整算法

前言 动态时间规整算法,Dynamic Time Wraping,缩写为DTW,是语音识别领域的一个基础算法。 算法的提出 DTW 的提出是为了解决或尽量解决在语音识别当中的孤立词识别不正确的问题。该问题简单描述为:在识别阶段,将输入…

SAP SD信贷管理信用管理手册(下)

1、项目类别的信贷激活 图1-12-1.项目类别的信贷设置路径 图1-12-2.项目类别的信贷参数激活 说明:项目类别是否进行信贷管理设置。 2、定义信贷组 图1-13-1.定义信贷组路径 图1-13-2.信贷组定义 说明:信贷组参与后续信贷控制的组合分配。 3、销售凭证及…

分布式项目___某污水处理项目

一.分布式项目___污水处理项目 项目地址:https://gitee.com/yanyigege/collaborative-water-springboot.git ​ 1.项目背景 总公司在全国各地有处理污水的项目部,各项目部处理自己的污水,总部需要监控各地分项目部每天处理污水的原料用量,掌握各分部的污水处理情况 ​ 2.功…

Nginx详细安装配置过程

目录 1.nginx环境准备 1.1 在配置好yum源之后,安装如下的编译工具 1.2 安装nginx所需的依赖库 1.3 关闭防火墙,selinux,并确保网络正常 2.nginx的编译安装 2.1从nginx官网复制下载链接,wget 下载 2.2? 解压nginx源代码 2…

2025年阿里云认证改版新消息!2025年阿里云认证考试内容有变!

阿里云认证已经确定在2025年要进行大改,这次改动幅度会比2023年改动更大,2023年主要改变是在考试题型上的变化,这次则主要是考试内容的变化了! 2023年阿里云ACP认证考试的改版变化主要有: (一&#xff09…

【Scala】图书项目系统代码演练3.1/BookService

package org.app package serviceimport models.{BookModel, BorrowRecordModel}import org.app.dao.{BookDAO, BorrowRecordDAO}import java.time.LocalDateTime import scala.collection.mutable.ListBuffer// 图书业务逻辑层 class BookService {private val bookDAO new B…

Ajax数据爬取

有时我们用requests 抓取页面得到的结果,可能和在浏览器中看到的不一样:在浏览器中可以看到正常显示的页面数据,而使用requests 得到的结果中并没有这些数据。这是因为 requests 获取的都是原始 HTML 文档,而浏览器中的页面是JavaScript 处理…

SpringCloud整合skywalking实现链路追踪和日志采集

1.部署skywalking https://blog.csdn.net/qq_40942490/article/details/144701194 2.添加依赖 <!-- 日志采集 --><dependency><groupId>org.apache.skywalking</groupId><artifactId>apm-toolkit-logback-1.x</artifactId><version&g…

12.30 Redis网络模型基础 IO NIO多路复用

图片引用自黑马程序员redis 网络模型 上图引用自java guide javaguide NIO

【智行安全】基于Synaptics SL1680的AI疲劳驾驶检测方案

随著车载技术的快速进步&#xff0c;驾驶安全越来越受到重视&#xff0c;而疲劳驾驶是造成交通事故的重要原因之一。传统的驾驶监控技术因精度不足或反应迟缓&#xff0c;无法满足实时监测需求。因此&#xff0c;结合人工智能技术的疲劳驾驶检测系统成为行业新方向&#xff0c;…

手机实时提取SIM卡打电话的信令声音-智能拨号器的SIP线路-双卡双待单通方案

手机实时提取SIM卡打电话的信令声音 --智能拨号器的SIP线路-双卡双待单通方案 一、前言 蓝牙电话的技术方案最初是从蓝牙耳机和车机蓝牙的使用领域延伸出来的技术方式。通过蓝牙的HFP协议&#xff0c;把手机通话的声音和通话事件状态提取出来进行复用和处理。但中国大陆现行…

HTML——26.像素单位

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>像素</title></head><body><!--像素&#xff1a;1.指设备屏幕上的一个点&#xff0c;单位px&#xff0c;如led屏上的小灯朱2.当屏幕分辨率固定时&…

LeetCode:513.找二叉树左下角的

跟着carl学算法&#xff0c;本系列博客仅做个人记录&#xff0c;建议大家都去看carl本人的博客&#xff0c;写的真的很好的&#xff01; 代码随想录 LeetCode&#xff1a;513.找二叉树左下角的 给定一个二叉树的 根节点 root&#xff0c;请找出该二叉树的 最底层 最左边 节点的…

如何使用 ChatGPT Prompts 写学术论文?

第 1 部分:学术写作之旅:使用 ChatGPT Prompts 进行学术写作的结构化指南 踏上学术写作过程的结构化旅程,每个 ChatGPT 提示都旨在解决特定方面,确保对您的主题进行全面探索。 制定研究问题: “制定一个关于量子计算的社会影响的研究问题,确保清晰并与您的研究目标保持一…