展开

关键词

Linux应用开发-LCD显示BMP图片

BMP格式的图片存放的就是原始的RGB数据,一般没有做压缩,也就是图片的画质是最原始的,也导致BMP图片占用的内存非常大。 为了解BMP格式,这篇文章就采用Linux开发板作为实验平台,在LCD屏上读取BMP图片,完成绘制,不需要借助任何第三方库,全部由纯C语言代码一行一行敲出来,深入理解Linux下帧缓冲编程框架、BMP图片的存储结构原理 下面列出BMP图片的结构: 位图数据存储规则: (1)每行的字节数必须是4的倍数,如果不是,则需要用0补齐。 (2)BMP位图数据的存放是从下到上,从左到右的。 实现代码 要在LCD屏上完成BMP图片的显示,编写代码需要分几步完成,先编写LCD屏的基本显示代码,封装画点函数,LCD屏测试没有问题之后,再编写BMP解码代码,完成图片的渲染显示。 图片 在工程目录下准备几张测试的BMP图片,程序运行时,在命令行上传入要显示的图片文件地址接口。

18430

bmp图片解码

bmp是window上最简单的图片了,没有压缩,而且易于读取,实现一个简单的bmp图片解码器是学习图像处理的入门必备啊。 参考bmp标准,其结构被分为了四个部分,文件头,位图信息头,颜色信息和图形数据。 前面54个字节已经固定,其中前14字节为文件头,后40字节为位图信息头。 之后,我们需要以二进制的形式打开bmp文件,with open("name.bmp", "rb") as file,就能够得到字节流。再之后按照bmp结构进行解码即可,比如前两个字节解码。 unpack(fmt, string),fmt代表解压出来的数据的格式,string代表字节,举栗子,在bmp图片解码开始的时候: unpack("2s", file.read(2)),表示解析前两个字节 考虑普通的真彩色图片,则第55个字节开始就是记录的rgb的数据,不过注意的是,数据是由左下角向右开始记录,并且是bgrbgr这样记录,当这一行结束之后再才记录上一行的数据,并且每一行的字节数必须保证为4

1.1K10
  • 广告
    关闭

    【玩转 Cloud Studio】有奖调研征文,千元豪礼等你拿!

    想听听你玩转的独门秘籍,更有机械键盘、鹅厂公仔、CODING 定制公仔等你来拿!

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    QSPI FLASH fatfs BMP图片显示

    这个demo实现了两个功能: 1、将SD卡中的logo.bmp图片复制到QSPI FLASH中。 完成该功能的前提是,SD卡和QSPI均已是Fatfs能够识别的格式。 2、调用LCD显示QSPI FLASH文件系统(fatfs)中的Bmp图片进行显示 软件逻辑如下: /** * @brief The application entry point. //test_sd_card_fatfs(); //test_spi_flash_fatfs(); copy_file(src_dir, dst_dir); Lcd_show_bmp (0,0,"1:/logo.bmp"); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE 代码请自行下载研究分析,有问题欢迎交流 获取完整demo: 码云仓库:https://gitee.com/morixinguan/bear-pi/tree/master/21.QSPI_Fatfs_Display_bmp_pic

    30410

    VC Picture Control显示BMP图片

    VC对话框初始时,Picture Control显示BMP图片: BOOL CLoginDog::OnInitDialog() { CDialog::OnInitDialog(); HBITMAP hBitmap; //添加登陆窗口中的图片 //关联图片ID hBitmap =(HBITMAP)LoadImage(AfxGetInstanceHandle(), 使其位图居中 pStatic->SetBitmap(hBitmap); //设置静态控件显示位图 return TRUE; } SetBitmap定义如下: // uBmpResource:图片 pStatic->ModifyStyle(0xF, SS_BITMAP); pStatic->SetBitmap(hBitmap); } 参考推荐: 使用Picture Control显示BMP 图片 VC怎样在picture control中添加图片

    76140

    C语言编程: 在BMP图片上添加图片水印

    一、运行环境介绍 Linux系统: Redhat6.3 (32位) gcc 版本 4.4.6 20120305 (Red Hat 4.4.6-4) (GCC) 二、功能介绍 创建一张BMP图片,将图片当做画板 ,在图片的指定位置绘制图片(要当做水印的图片)。 )); //图片的类型 bmp_head.type[0]='B'; bmp_head.type[1]='M'; //文件大小 bmp_head.size=54+atoi bmp_info.size=sizeof(struct _BMP_INFO); //图片的宽度和高度 bmp_info.w=atoi(argv[1]); bmp_info.h \n",cnt); /*4.添加水印: 制作图片的数据*/ int one_line_byte=bmp_info.w*3; //BMP图片一行的字节数 while(one_line_byte

    29820

    仿真实例2——BMP图片文件读写

    ) 这部分的内容根据BMP位图使用的位数不同而不同,在24位图中直接使用RGB,而其他的小于24位的使用调色板中颜色索引值 读写BMP文件 下面先给出一个图片,鼠标右键查看图片的属性,看到图片分辨率为 `timescale 1ns / 1ps module bmp_file(); integer fileID ;//读BMP图片文件的指针 integer cc integer j ; reg [7:0] rd_bmp_data [0:2100000] ;//读图片数据 reg [7:0] wr_bmp_data integer R_bmp_hight ;//读出图片的高度 integer R_data_start_index ;//读出图片的宽度 integer R_bmp_size 文件的读写操作,并且对图片进行了像素取反rd_data[7:0]=8'hff-rd_bmp_data[i]; 图像结果 处理后的图片结果存放output_file.bmp,显示如下图 ?

    50110

    移植SDL到JZ2440显示BMP图片

    写这类教程的目的是, 熟悉Linux基本操作和嵌入式开发流程, 希望对你有所帮助. 前面我们讲过系统起来后开机LOGO的制作, 韦老师第3期讲了如何显示jpeg图片, 那么怎么显示bmp图片? ********************************** 文件名称: show_bmp_file.c        ****** 程序功能: 显示一张bmp图片到屏幕           *         // witcher.bmp是480*272分辨率bmp格式图片,事先把它拷贝到Ubuntu相应目录 现象如下 ? 2、同样编译show_bmp_file.c,和之前不同的是,这次是交叉编译 $ cd .. $ cd show_bmp   //这是笔者之前创建的目录,用于存放测试程序 $ arm-linux-gccshow_bmp_file.c $ sudo   cp  witcher.bmp    /work/busybox-1.21.0/rootfs/ 5、在jz2440上显示图片: .

    28230

    常见图片格式详解系列(二)----BMP

    BMP BMP是windows的一种图片格式,其组织方式其实相对简单喽,一个简单表示bmp文件的头结构 (BITMAPFILEHEAER)+ 一个表示图片信息的结构(BITMAPINFOHEADER)+ BITMAPFILEHEADER WORD bfType:表示文件类型,该值必须是0x424D,即字符‘BM’,否则便不是BMP图片。 DWORD biWidth:很明显喽,表示图片的宽度。 DWORD biHeight:同上,表示图片的高度。 WORD biPlanes:表示目标设备平面数,为1。

    43120

    BMP格式

    简介 BMP 格式是 Windows 下最简单的图像存储格式,它支持图像以每像素 1,4,8,16,24,32比特表示。BMP 格式也支持 4,8比特每像素的游程算法压缩图像。 2. 格式 BMP 文件基本结构如下: image.png 其详细结构如下: image.png 2.1 File Header BMP 文件中的 File Header 包含一个 BITMAPFILEHEADER Windows 下 BMP 文件一般使用的是 BITMAPINFOHEADER 结构。 算法 对于 4,8 比特每像素,BMP 格式支持游程编码压缩。 附录 BMP file format 《Compressed Image File Formats JPEG, PNG, GIF, XBM, BMP》 by John Miano

    11910

    乱序+移位加密24位bmp格式图片 scala实现

    前言: 关于bmp图片的格式分析:BMP 用java读写24位bmp格式图片的一篇博客:关于Java读取和编写BMP文件的总结, 正文: 乱序和移位加密都属于古典加密方法,容易被破解,本文将两种加密方式结合 乱序加密bmp图片: 加密bmp图片只是对bmp格式图片的图像数据部分进行加密,然后按照bmp图片的格式先将信息头写入文件, 最后再写入加密的数据,这样就完成了对bmp图片内容的加密,加密后还是bmp格式图片 图片的尾部,这样解密程序只需要读入 加密图片就可以解密了,每一轮加密的结果都会输出。 移位加密bmp图片: 程序每次加密前随机生成一个整数n, 0 <= n <= 255,然后对于 red通道:    red = (red + n) % 256 green通道:green = (green 乱序+移位加密程序代码: (注:只能加密宽度能被4整除的24位bmp图片,这应该个bug): import java.io._ object EncryptBmp24 {   def main(args

    88420

    php bmp格式图片转换成jpg格式程序

    . */ //php教程将bmp格式图片转换成jpg格式程序 function imagebmp($img,$file="",$rle=0) { $colorcount=imagecolorstotal imagecreatefrombmp *------------------------------------------------------------ * - reads image from a bmp 0$bin"; return $bin; }; function inttobyte($n) { return chr($n); }; //实例方法 //include_once('bmp.php '); $image=imagecreatefrombmp('a.bmp'); imagejpeg($image,'a.jpeg'); imagedestroy($image);

    11040

    基于24位bmp图片数据区隐写的实现

    2,24位bmp图像简介 要在bmp图像进行数据区隐写,必须要知道它的数据结构。否则,可能会破坏图像。 这是bmp的文件结构。      ) 24位bmp图像数据存储的是实际的颜色数据,每个像素用3字节表示,分别是红绿蓝。 文件头和信息头共占了54个字节 24位bmp图像编码.jpg 3.程序设计思路 将bmp和txt读入之后,其实就是两个字符串。接下来要做的就是设计一个算法让它们合并。 } out<<temp; } pic.close(); out.close(); return 0; }  5.总结 这是一个很简单的图片数据区隐写程序 ,基于24位bmp图像。

    25820

    BMP24位照片格式

    BMP24位照片格式: BMP24是指这个照片格式里的一个像素是由三个字节组成的,为什么是三个字节呢,因为三原色:蓝,红,绿,三个字节分别记录着三原色,所以3*8=24。什么是像素? 将图片放大后所看到的一个个点就是像素: ? 文件由头个内容组成,头记载着这个文件的编码格式类型,文件的基本信息,如果是txt格式的文本文件是没有文件头的,在BMP24里文件头占用54位。

    84320

    BMP转灰度Matlab代码

    bmp2gray.m 代码 imageName=strcat('frame_c.bmp'); I= imread(imageName); J=rgb2gray(I); figure(1); imshow(J); fname=strcat('frame_g.bmp'); imwrite(J,fname);

    20420

    提取bmp图片的颜色信息,可直接framebuffer显示(c版本与python版本)

    稍微了解了下linux的framebuffer,这是一种很简单的显示接口,直接写入像素信息即可 配置好的内核,会有/dev/fbn 的接口,于是想能否提前生成一个文件,比如logo.fb,里面仅包含像素信息 ,从而可以直接送入framebuffer显示 搜索了一下,有不少文章介绍,如何解析bmp图片并送给framebuffer显示,但没有找到预处理工具,都是直接处理完就送入framebuffer 于是参考了一篇文章 <unistd.h> #include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <string.h> #include <linux ) rgb=struct.pack('BBB',b,g,r) f.write(rgb); 补充,Python版本的拓展:   请查看文章 python将图片转换为 Framebuffer裸数据格式(终端显示图片) 或代码 https://github.com/zqb-all/convertfb 本文地址:http://www.cnblogs.com/zqb-all

    71640

    Bmp24Writer代码

    ._ object Bmp24Writer { //将加密的数据写入文件     def writeEncryptedBmp(bmpPath: String, keys: Array[Int],       dos, red, green ,blue)                 dos.flush      dos.close        fos.close      }       //写bmp 图片的信息头和文件头还有位图数据     def writeBmp24(dos: DataOutputStream,           red: Array[Array[Int]],            height = red.length           //14字节的文件头      //代表BM      val bfType = 0x424d.toShort         // bmp

    23440

    bmp图像大小biSizeImage算法公式由来

    计算BMP方法 法一:lpbmiHeader->biSizeImage = (cx * biBitCount + 31)/32*4*cy; 法二:lpbmiHeader->biSizeImage = ( + 31) & ~31) / 8 * cy; 法三:lpbmiHeader->biSizeImage = ((cx * biBitCount + 31) & ~31) >> 3 * cy; 前提: 在BMP 上面公式红色部分都是一样的结果,都是计算BMP图像中每行的字节数。 其中cx * biBitCount是实际一行占用的位数。暂且用dwRowBit表示吧。 要注意的是并不是图像的高度乘以图像宽度乘以表示每象 素的字节数就行了,因为在BMP的文件格式中规定每行的字节数必须是4的整数倍,不是4的整数倍的要补 零。

    1.2K50

    威胁分析报告:10.Lazarus以ThreatNeedle家族攻击工业(BMP图片隐藏RAT)

    图片隐藏RAT恶意样本 三.初次感染 四.恶意软件植入 1.ThreatNeedle安装程序(installer) 2.ThreatNeedle加载器(loader) 3.ThreatNeedle后门( 二.最新补充:BMP图片隐藏RAT恶意样本 在介绍此次攻击事件之前,我们先来补充Lazarus最新的攻击技术,即使用BMP图像隐藏RAT恶意软件。 ,该黑客将恶意代码隐藏在位图(. bmp)图像文件中,从而投放了一个能够窃取敏感信息的远程木马(RAT)。 前文分享: [译] APT分析报告:01.Linux系统下针对性的APT攻击概述 [译] APT分析报告:02.钓鱼邮件网址混淆URL逃避检测 [译] APT分析报告:03.OpBlueRaven揭露APT 图片隐藏RAT) 2020年8月18新开的“娜璋AI安全之家”,主要围绕Python大数据分析、网络空间安全、逆向分析、APT分析报告、人工智能、Web渗透及攻防技术进行讲解,同时分享CCF、SCI、南核北核论文的算法实现

    20030

    【第3版emWin教程】第21章 emWin6.x的BMP图片显示

    BMP图片的优势就是无损的,真实反映图像效果,缺点是图片比较大。 21.3 BMP图片的API函数及其显示方法 当前emWin支持的API函数有如下11个: ? 21.3.1 绘制已经加载到存储器的BMP图片 绘制加载到存储器的BMP图片主要是通过函数GUI_BMP_Draw来实现,下面我们分3步来说明如何将SD卡中的BMP图片显示到LCD上面。 , 0, 0); 通过上面三步就完成了BMP图片的绘制操作,这种方式绘制BMP图片速度非常快,后面有用到此BMP图片的地方调用函数GUI_MEMDEV_WriteAt即可。 下面我们分2步来说明如何将SD卡中的BMP图片显示到LCD上面。 第1步:将BMP图片复制到SD卡的根目录下,然后直接调用函数GUI_BMP_DrawEx就可以显示。 21.6 总结 总的来说,STM32H7+32位SDRAM绘制BMP图片的性能已经比较给力,实际项目中推荐将BMP图片加载到emWin动态内存,然后绘制到内存设备中,再通过内存设备函数显示此BMP图片的速度非常快

    21430

    算法(BMP图像格式处理)

    林世霖:BMP是一幅美丽的图画,里面爬满了算法。 宽泛来说,BMP图像是支持压缩的,他甚至支持jpeg压缩算法,但更一般的情况是,BMP用来存储所谓的真彩色影像,即24位的BitMap(位图),本文并不想刨BMP的祖坟,将它所有的细节抽丝剥茧一一展现, 先来看BMP格式图像的文件总体结构: ? 因此在读取BMP图像时一般从最后一行开始读取,然后读倒数第二行,以此类推,然后将读取到的数据依次刷新到显存,这样才能正确显示图像,否则图片看起来是反的。 附一张刷BMP图的代码: ? 参数: 1,bmpfile是需要显示的BMP图片名称 2,FB是显存指针 3,vinfo是LCD参数结构信息 4,xoffset和yoffet是图片要显示的位置坐标

    52220

    相关产品

    • 图片处理

      图片处理

      图片处理(IP)是由腾讯云数据万象提供的功能丰富、低成本、高可靠的图片处理服务。图片处理支持灵活的图像编辑,并且提供 Guetzli 压缩、TPG 转码等图片瘦身解决方案,图片或文字水印、独有盲水印等版权保护解决方案,满足多种业务场景下的图片需求。

    相关资讯

    热门标签

    活动推荐

    扫码关注腾讯云开发者

    领取腾讯云代金券