BIOS实战之读取文件--BMP图片显示

2024-06-07 05:18

本文主要是介绍BIOS实战之读取文件--BMP图片显示,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本节直接贴主要的代码:

#include "DisplayBmpTest.h"EFI_STATUS
EFIAPI
ShellAppMain (IN UINTN Argc,IN CHAR16 **Argv)
{EFI_STATUS                       Status;EFI_GRAPHICS_OUTPUT_PROTOCOL     *GraphicsOutput = NULL;UINT8                            *DataBuffer;UINTN                           DataSize;EFI_GRAPHICS_OUTPUT_BLT_PIXEL    *Blt = NULL;UINTN                            BltSize;UINTN                            Height;UINTN                            Width;Status = gBS->LocateProtocol (&gEfiGraphicsOutputProtocolGuid,NULL,(VOID **)&GraphicsOutput);if (EFI_ERROR (Status)) {GraphicsOutput = NULL;Print (L"locate protocol gEfiGraphicsOutputProtocolGuid is error!\n");return Status;}Status = ReadFile (Argv[1], &DataBuffer, &DataSize);if (EFI_ERROR (Status)) {Print (L"Read bmp file to buffer is error!\n");return Status;}Status = TranslateBmpToGopBlt ((VOID *)DataBuffer,DataSize,&Blt,&BltSize,&Height,&Width);if (EFI_ERROR (Status)) {if (Blt != NULL) {FreePool (Blt);}Print (L"TranslateBmpToGopBlt is error!\n");return Status;}Status = GraphicsOutput->Blt (GraphicsOutput,Blt,EfiBltBufferToVideo,0,0,0x0,0x0,Width,Height,Width * sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL));if (EFI_ERROR (Status)) {Print (L"GraphicsOutput Blt is error!\n");return Status;}if (Blt != NULL)FreePool (Blt);Status = gST->ConOut->EnableCursor(gST->ConOut,TRUE);return Status;
}

运行后,我们就能读取自己想要显示的图片,并进行显示:

 这里存放了两个位置,一个根目录,一个自己创建的目录,都能正常显示,进行BIOS更新也是同样的道理,读取文件后,进行SPI FLASH的擦写,擦写要注意一点,最小擦写为4k,也就是0x1000。

这篇关于BIOS实战之读取文件--BMP图片显示的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1038260

相关文章

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

详解C#如何提取PDF文档中的图片

《详解C#如何提取PDF文档中的图片》提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使用,下面我们就来看看如何使用C#通过代码从PDF文档中提取图片吧... 当 PDF 文件中包含有价值的图片,如艺术画作、设计素材、报告图表等,提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使

Java实现文件图片的预览和下载功能

《Java实现文件图片的预览和下载功能》这篇文章主要为大家详细介绍了如何使用Java实现文件图片的预览和下载功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... Java实现文件(图片)的预览和下载 @ApiOperation("访问文件") @GetMapping("

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

Pandas使用SQLite3实战

《Pandas使用SQLite3实战》本文主要介绍了Pandas使用SQLite3实战,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1 环境准备2 从 SQLite3VlfrWQzgt 读取数据到 DataFrame基础用法:读

Python实战之屏幕录制功能的实现

《Python实战之屏幕录制功能的实现》屏幕录制,即屏幕捕获,是指将计算机屏幕上的活动记录下来,生成视频文件,本文主要为大家介绍了如何使用Python实现这一功能,希望对大家有所帮助... 目录屏幕录制原理图像捕获音频捕获编码压缩输出保存完整的屏幕录制工具高级功能实时预览增加水印多平台支持屏幕录制原理屏幕

解决Java中基于GeoTools的Shapefile读取乱码的问题

《解决Java中基于GeoTools的Shapefile读取乱码的问题》本文主要讨论了在使用Java编程语言进行地理信息数据解析时遇到的Shapefile属性信息乱码问题,以及根据不同的编码设置进行属... 目录前言1、Shapefile属性字段编码的情况:一、Shp文件常见的字符集编码1、System编码

利用Python实现添加或读取Excel公式

《利用Python实现添加或读取Excel公式》Excel公式是数据处理的核心工具,从简单的加减运算到复杂的逻辑判断,掌握基础语法是高效工作的起点,下面我们就来看看如何使用Python进行Excel公... 目录python Excel 库安装Python 在 Excel 中添加公式/函数Python 读取