最近在研究基于imx6ull开发板,想让开发板支持显示图片、字符串、背景色的功能。

操作的主要步骤如下:

  1. 移植设备树和驱动
  2. 移植libjpeg库
  3. 编写测试程序

一、移植设备树和驱动

开发板原厂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下。

  1. lcd.c、lcd_show_jpeg.c为基于libjpeg库实现的显示汉字、显示图片、划线等功能函数。
  2. HZK16为汉字库
  3. ./lib/libjpeg.a 是libjpeg静态库
  4. 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板子如何显示图片、汉字、划线、背景色的更多相关文章

  1. 将中文库导入到ARM板子中以解决中文显示乱码的教程

    1.将中文字符集导入到ARM板子中的/usr/fonts/目录下 在这里我们使用的字符集为:DroidSansFallback.ttf 下载地址为:https://pan.baidu.com/s/1e ...

  2. python将图片转换为Framebuffer裸数据格式(终端显示图片)

    要在ubuntu终端显示图片或者在板子的LCD显示图片,Framebuffer是一个简单易用的接口,直接写入像素信息即可. 但普通的图片带有头部信息或者编码格式不同,直接送入Framebuffer是显 ...

  3. EmguCV控件Emgu.CV.UI.ImageBox及C# picturebox显示图片连续刷新出现闪烁问题

    在上一篇里,EmguCV(OpenCV)实现高效显示汉字及叠加  实现了视频叠加及显示,但存在问题,就是 Emgu.CV.UI.ImageBox及C# picturebox显示图片时都会出现闪烁,尤其 ...

  4. Android TextView里直接显示图片的三种方法

    方法一:重写TextView的onDraw方法,也挺直观就是不太好控制显示完图片后再显示字体所占空间的位置关系.一般假设字体是在图片上重叠的推荐这样写.时间关系,这个不付源代码了. 方法二:利用Tex ...

  5. 【linux基础】关于ARM板子使用O3编译选项优化

    前言 应领导要求需要将最初级版本的算法移植到ARM板子上,并进行优化,以期达到实时. 平台 移植前: TX2 移植后: ARM() processor : model name : ARMv7 Pro ...

  6. python将图片转换为Framebuffer裸数据格式(终端显示图片)【转】

    转自:https://www.cnblogs.com/zqb-all/p/6107905.html 要在ubuntu终端显示图片或者在板子的LCD显示图片,Framebuffer是一个简单易用的接口, ...

  7. img只显示图片一部分 或 css设置背景图片只显示图片指定区域

    17:14 2016/3/22img只显示图片一部分 或 css设置背景图片只显示图片指定区域 background-position: 100% 56%; 设置背景图片显示图片的哪个坐标区域,图片左 ...

  8. Chrome 控制台新玩法-console显示图片以及为文字加样式

    有兴趣的同学可以文章最后的代码复制贴到控制台玩玩. Go for Code 在正常模式下,一般只能向console 控制台输出简单的文字信息.但为了把信息输出得更优雅更便于阅读,除了cosole.lo ...

  9. 如何使用SOIL在VS2012的 C++环境下显示图片

    先看下效果. 这是一个很无聊的功能....首先说下,我做这个功能的初衷并不是为了实现在控制台中显示图片...(这貌似很无聊) 而是因为自己想做用C做一个游戏:http://q.cnblogs.com/ ...

  10. Qt自适应大小显示图片,添加菜单

    由于后面的图像处理需要UI,OpenCV自带也不怎么会,MFC实在懒得学的.听同学说Qt不错,就用Qt做UI了. 本文主要介绍三个内容:在Qt Creator中使用OpenCV2.Qt中自适应显示图片 ...

随机推荐

  1. 阿里云ECS主机自建SNAT,实现没有公网的主机通过有公网的主机访问外网

    目的: SNAT:实现没有公网IP的ECS实例借助有公网的ECS访问外网 实现前提: 有公网的主机与没有公网的主机必须处在同一个VPC安全组(确保两个主机互通才可以) 全程都在有公网的主机上操作 开启 ...

  2. 09-Python模块

    导入模块 通过import导入模块 import time #导入模块time time.sleep(50) #睡眠50s 导入模块并重命名 import time as t #导入模块time重命名 ...

  3. Swoole v6 能否让 PHP 再次伟大?

    大家好,我是码农先森. 现状 传统的 PHP-FPM 也是多进程模型的的运行方式,但每个进程只能处理完当前请求,才能接收下一个请求.而且对于 PHP 脚本来说,只是接收请求和响应请求,并不参与网络通信 ...

  4. python基础-数据容器的通用操作

    五种数据容器的特性   列表list[]  元组tuple()  字符串str""   集合set{}   字典dict{key:value} 元素数量 支持多个 支持多个 支持多 ...

  5. sql-labs通关笔记(上)

    sql-labs通关笔记(上) 这里我们先只讲解less-1到less-9 联合查询注入 Less-1:GET -Error based.Single quotes -string 界面 在url中加 ...

  6. 复习 - ajax

    复习呢有一个很直观的感受,就是以前学的东西,萌懂半懂的,这一来全部都清楚了,你以前以为你学的并不好但是复习一次把以前的案例一做,居然能够自己独立完成,知识点看着掌握的还不错. 1. 两天时间就把整个a ...

  7. 韦东山freeRTOS系列教程之【第五章】队列(queue)

    目录 系列教程总目录 概述 5.1 队列的特性 5.1.1 常规操作 5.1.2 传输数据的两种方法 5.1.3 队列的阻塞访问 5.2 队列函数 5.2.1 创建 5.2.2 复位 5.2.3 删除 ...

  8. Java常见问题-多线程

    现在有 T1.T2.T3 三个线程,你怎样保证 T2 在 T1 执行完后执行,T3 在 T2 执行完后执行? 这个多线程问题比较简单,可以用 join 方法实现. 在 Java 中 Lock 接口比 ...

  9. Spring的AOP快速实现通用日志打印

    需求分析 针对VideoService接口实现日志打印 三个核心包 spring-aop:AOP核心功能,例如代理工厂 aspectjweaver:简单理解,支持切入点表达式 aspectjrt:简单 ...

  10. css浅谈Flex布局

    1.打开Flex布局 .box{ display: flex; } 2.容器的属性 flex-direction flex-wrap flex-flow justify-content align-i ...