100ASK_IMX6ULL arm板子如何显示图片、汉字、划线、背景色
最近在研究基于imx6ull开发板,想让开发板支持显示图片、字符串、背景色的功能。
操作的主要步骤如下:
- 移植设备树和驱动
 - 移植libjpeg库
 - 编写测试程序
 
一、移植设备树和驱动
开发板原厂SDK已经移植了lcd对应的设备树和驱动。具体可以参考韦东山老师的文章
https://blog.csdn.net/thisway_diy/article/details/104697924
二、移植libjpeg库
1.下载libjpeg库
下载地址:
http://www.ijg.org/files/
选择版本:jpegsrc.v6b.tar.gz
2.解压
yikou@ubuntu:/work/lib$ tar -zxvf jpegsrc.v6b.tar.gz
3.配置
yikou@ubuntu:/work/lib$ cd jpeg-6b/
./configure --host=arm-linux-gnueabihf --prefix=$PWD/temp_install
如果遇到错误提示没有某个目录,只需要手动创建即可
4. 安装
yikou@ubuntu:/work/lib/jpeg-6b$ make
yikou@ubuntu:/work/lib/jpeg-6b$ make install
5.查看
yikou@ubuntu:/work/lib/jpeg-6b$ cd temp_install/
yikou@ubuntu:/work/lib/jpeg-6b/temp_install$ ls
bin  include  lib  share
我没有使用动态库,而是直接使用静态库/work/lib/jpeg-6b/libjpeg.a 编译代码,方便操作。
三、 编译测试程序
一口君是把静态库直接拷贝到测试代码目录lib下,头文件拷贝到include下。

- lcd.c、lcd_show_jpeg.c为基于libjpeg库实现的显示汉字、显示图片、划线等功能函数。
 - HZK16为汉字库
 - ./lib/libjpeg.a 是libjpeg静态库
 - include下的头文件是图片格式处理、显示字符串、划线要用到的其他的头文件
 
这些功能具体原理,可以自己查看代码,暂不讨论。
完整代码请关注 一口Linux,后台回复IMX6ULLlcd
以下是测试程序文件:
main.c
#include <stdio.h>
#include <unistd.h>
#include "lcd.h"
#include "lcd_show_jpeg.h"
int main(int argc, const char *argv[])
{
	LCD_Init();    //初始化
	LCD_Clear(RED);//背景呈红色
	for(;;)
	{//1024 * 600
		printf("------一口Linux----------\n");
		LCD_PutString(240,136,"一口Linux",BLUE,RED);//在240.136位置显示一口Linux,蓝字红底
		sleep(1);
		LCD_Clear(BLUE);
		show_jpeg("test.jpeg");//显示图片test.jpeg
		sleep(10);
	}
	return 0;
}
arm-linux-gnueabihf-gcc *.c -o run -I  ./include/ ./lib/libjpeg.a
执行结果:

想呈现其他显示效果,只需根据实例调用对应函数即可。
备注:常见错误解决
如果版本选择的不对,会遇到以下错误:
Wrong JPEG library version: library is 90, caller expects 62
因为使用的库版本太高是90的,所以需要下载62版本,对应的是这个压缩包jpegsrc.v6b.tar.gz。
其中:62 对应  6b
在移植mjpeg-streamer也会遇到类似错误,按照步骤修改即可。
然后按照1-5步骤重新操作即可

更多linux知识,关注 一口Linux
100ASK_IMX6ULL arm板子如何显示图片、汉字、划线、背景色的更多相关文章
- 将中文库导入到ARM板子中以解决中文显示乱码的教程
		
1.将中文字符集导入到ARM板子中的/usr/fonts/目录下 在这里我们使用的字符集为:DroidSansFallback.ttf 下载地址为:https://pan.baidu.com/s/1e ...
 - python将图片转换为Framebuffer裸数据格式(终端显示图片)
		
要在ubuntu终端显示图片或者在板子的LCD显示图片,Framebuffer是一个简单易用的接口,直接写入像素信息即可. 但普通的图片带有头部信息或者编码格式不同,直接送入Framebuffer是显 ...
 - EmguCV控件Emgu.CV.UI.ImageBox及C# picturebox显示图片连续刷新出现闪烁问题
		
在上一篇里,EmguCV(OpenCV)实现高效显示汉字及叠加 实现了视频叠加及显示,但存在问题,就是 Emgu.CV.UI.ImageBox及C# picturebox显示图片时都会出现闪烁,尤其 ...
 - Android TextView里直接显示图片的三种方法
		
方法一:重写TextView的onDraw方法,也挺直观就是不太好控制显示完图片后再显示字体所占空间的位置关系.一般假设字体是在图片上重叠的推荐这样写.时间关系,这个不付源代码了. 方法二:利用Tex ...
 - 【linux基础】关于ARM板子使用O3编译选项优化
		
前言 应领导要求需要将最初级版本的算法移植到ARM板子上,并进行优化,以期达到实时. 平台 移植前: TX2 移植后: ARM() processor : model name : ARMv7 Pro ...
 - python将图片转换为Framebuffer裸数据格式(终端显示图片)【转】
		
转自:https://www.cnblogs.com/zqb-all/p/6107905.html 要在ubuntu终端显示图片或者在板子的LCD显示图片,Framebuffer是一个简单易用的接口, ...
 - img只显示图片一部分 或 css设置背景图片只显示图片指定区域
		
17:14 2016/3/22img只显示图片一部分 或 css设置背景图片只显示图片指定区域 background-position: 100% 56%; 设置背景图片显示图片的哪个坐标区域,图片左 ...
 - Chrome 控制台新玩法-console显示图片以及为文字加样式
		
有兴趣的同学可以文章最后的代码复制贴到控制台玩玩. Go for Code 在正常模式下,一般只能向console 控制台输出简单的文字信息.但为了把信息输出得更优雅更便于阅读,除了cosole.lo ...
 - 如何使用SOIL在VS2012的 C++环境下显示图片
		
先看下效果. 这是一个很无聊的功能....首先说下,我做这个功能的初衷并不是为了实现在控制台中显示图片...(这貌似很无聊) 而是因为自己想做用C做一个游戏:http://q.cnblogs.com/ ...
 - Qt自适应大小显示图片,添加菜单
		
由于后面的图像处理需要UI,OpenCV自带也不怎么会,MFC实在懒得学的.听同学说Qt不错,就用Qt做UI了. 本文主要介绍三个内容:在Qt Creator中使用OpenCV2.Qt中自适应显示图片 ...
 
随机推荐
- 文件系统(八):Linux JFFS2文件系统工作原理、优势与局限
			
liwen01 2024.06.23 前言 在嵌入式Linux设备中,经常使用jffs2文件系统来作为参数区的文件系统格式.至于为什么要使用jffs2来作为参数区的文件系统,我猜大部分人都没有做过多的 ...
 - ZYNQ uboot 网络调试
			
背景 使用 Vivado配置好网络,并在PetaLinux中构建了完整的uboot.kernel.rootfs以后,发现网络有问题. > ping 192.168.168.1 ethernet@ ...
 - 下载 Linux 内核的脚本
			
介绍 在 类UNIX 环境下运行比较好(基于wget) 包括了 2.6 ~ 4.x 内核的地址. 5.x 因为 还在更新因此不做记录. 脚本下载地址: https://files.cnblogs.co ...
 - Nuxt3 的生命周期和钩子函数(五)
			
title: Nuxt3 的生命周期和钩子函数(五) date: 2024/6/29 updated: 2024/6/29 author: cmdragon excerpt: 摘要:本文详细介绍了Nu ...
 - SpringBoot目录文件结构和官方推荐的目录规范、静态资源访问
			
目录讲解 src/main/java:存放代码 src/main/resourcces static:存放静态文件,比如css.js.image,(访问方式:http://localhost:8080 ...
 - 数据存储为json或数据库
			
1.数据存储 In [ ]: import requests from bs4 import BeautifulSoup rqq = requests.get('http://www.tipdm.co ...
 - ComfyUI进阶篇:ControlNet核心节点
			
前言: ControlNet_aux库包含大量的图片预处理节点,功能丰富,适用于图像分割.边缘检测.姿势检测.深度图处理等多种预处理方式.掌握这些节点的使用是利用ControlNet的关键,本篇文章将 ...
 - thinkphp模型hasOne、hasMany、belongsTo详解
			
在ThinkPHP框架中,hasOne.hasMany和belongsTo是用于定义模型间一对多(1:n).一对一(1:1)和多对一(n:1)关联关系的方法.以下是一些简单的示例来解释这些关系: 1. ...
 - Java21的虚拟线程Virtual Thread初体验
			
我们之前使用的是操作系统平台的线程,就称之为"系统线程"吧.虚拟线程是JDK维护的,原理跟WebFlux的底层实现差不多,都是工作线程分离. 要使用虚拟线程,需要使用JDK21以上 ...
 - 构建基于Java Spring Boot和Uniapp的心理小程序:从零到一的完整指南
			
构建基于Java Spring Boot和Uniapp的心理小程序:从零到一的完整指南 前言 大家好,今天我们来聊聊如何使用Java Spring Boot和Uniapp构建一个心理小程序.这个项目不 ...