LVGL学习笔记 21 - 图像Image

2023-11-12

目录

1. 图像来源

1.1 图片源文件

1.2 颜色格式

1.2.1 LV_IMG_CF_ALPHA_1/2/4/8BIT

1.2.2 LV_IMG_CF_INDEXED_1/2/4/8BIT

1.2.3 LV_IMG_CF_RAW/_ALPHA/_CHROME_KEYED

1.2.4 LV_IMG_CF_TRUE_COLOR/_ALPHA/_CHROMA_KEYED

1.2.5 LV_IMG_CF_RGB565A8

2. 显示图片

2.1 创建

2.2 申明

2.3 设置源

3. 样式

3.1 设置x/y方向上的偏移

3.2 设置支点

3.3 旋转

3.4 放大缩小

3.5 抗锯齿

3.6 设置图像大小模式


图像是显示来自闪存(作为数组)或来自文件的图像的基本对象。

1. 图像来源

和字库类似,可以通过在线转换工具将图片转换为LVGL支持的C数组或二进制文件。

Online image converter - BMP, JPG or PNG to C array or binary | LVGLhttps://lvgl.io/tools/imageconverter

离线版本(因为网络的问题,建议用这种方式)的使用方法:

a. 安装nodejs

nodejs安装及环境配置_Mr.羽猫君的博客-CSDN博客https://blog.csdn.net/qq_57210034/article/details/124823972

b. 进入CMD运行‘npm install’和'npm install -g typescript'

最好在运行前改一下镜像的地址,例如:

npm config set registry http://registry.cnpmjs.org/
npm config set registry https://registry.npmjs.org/

c. 通过git clone克隆离线工具

git clone https://github.com/lvgl/lv_img_conv.git

d. 在CMD界面进入文件夹lib中,运行'npm install -g ts-node'

e. 在lib文件中运行命令转换图片,例如:

ts-node cli.ts logo_lvgl.png -f -c CF_TRUE_COLOR_ALPHA

也可以在文件夹内建立bat文件,例如:

1.1 图片源文件

支持的格式有BMP, JPG, PNG和SVG,可以一次选择多个文件。为了便于理解格式问题,新建一个像素8x8的bmp文件,用画图软件打开编辑:

输出格式选择C数组。

1.2 颜色格式

为了节约空间,图像需要选择合适的格式,LVGL支持5大类颜色格式。

1.2.1 LV_IMG_CF_ALPHA_1/2/4/8BIT

存储 1、2、4 或 8 位的 Alpha 值,源图像必须是 Alpha 通道,整个图像是一种可以更改的颜色。

如果用windows的画图软件编辑保存,即第一个像素为黑色,其他颜色是白色,如下图。这时会发现转换工具转换出来的数据都是0xFF,这是因为需要原图像要有Alpha通道。

可以使用GIMP(或PS)的图像处理软件,将白色改为透明色,再导出为png图片。

 LV_IMG_CF_ALPHA_8BIT格式生成的数组如下:

const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_E uint8_t e_map[] = {
  0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
};

在图片上再增加一个点判断工具扫描方向

const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_E uint8_t e_map[] = {
  0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
};

可以看出扫描方向是从左到右,再从上到下。

将格式改为CF_ALPHA_1_BIT,生成的数组为:

const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_E uint8_t e_map[] = {
  0x80, 
  0x80, 
  0x00, 
  0x00, 
  0x00, 
  0x00, 
  0x00, 
  0x00, 
};

1.2.2 LV_IMG_CF_INDEXED_1/2/4/8BIT

使用2、4、16或256色调色板,并以1、2、4或8位存储每个像素。同样,以第一个像素为黑色的8x8图片为例,生成CF_INDEXED_1_BIT格式的数据如下:

const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_E uint8_t e_map[] = {
  0x00, 0x00, 0x00, 0x00, 	/*Color of index 0*/
  0x00, 0x00, 0x00, 0xff, 	/*Color of index 1*/

  0x80, 
  0x00, 
  0x00, 
  0x00, 
  0x00, 
  0x00, 
  0x00, 
  0x00, 
};

可以看到前面8个字节就是Index,Index 0表示白色或者透明色,Index 1表示黑色。

1.2.3 LV_IMG_CF_RAW/_ALPHA/_CHROME_KEYED

RAW表示数组是图片的原始数据。把图片导出为bmp文件,格式为CF_RAW(好像是和CF_RAW_CHROME_KEYED一样,生成的格式变量是LV_IMG_CF_RAW_CHROMA_KEYED)

可以看到数组就是图片的二进制文件。

CF_RAW_ALPHA格式表示为每个像素添加了Alpha字节。

 CF_RAW_CHROME_KEYED格式表示如果像素具有LV_COLOR_TRANSP(在lv_conf.h中设置)颜色,则该像素将是透明的。

通过同样的图片对比三种格式,没发现三者生成的数据有差别。

1.2.4 LV_IMG_CF_TRUE_COLOR/_ALPHA/_CHROMA_KEYED

LV_IMG_CF_TRUE_COLOR:只存储RGB颜色(使用LVGL配置的任何颜色深度)。 如果采用之前的图片,得到的结果相反,每个像素得到的值都是0x00,即没有参考ALPHA。

#if LV_COLOR_DEPTH == 1 || LV_COLOR_DEPTH == 8
  /*Pixel format: Red: 3 bit, Green: 3 bit, Blue: 2 bit*/
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
#endif

如果把黑色改为红色就可以看到数据变化。 

LV_IMG_CF_TRUE_COLOR_ALPHA:每个像素添加了Alpha字节,如下,每个像素变为2个字节

#if LV_COLOR_DEPTH == 1 || LV_COLOR_DEPTH == 8
  /*Pixel format: Alpha 8 bit, Red: 3 bit, Green: 3 bit, Blue: 2 bit*/
  0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
#endif

LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED:如果像素具有LV_COLOR_TRANSP(在lv_conf.h中设置)颜色,则该像素将是透明的。

1.2.5 LV_IMG_CF_RGB565A8

这种格式是数组有RGB565+Alpha8两组数据组合。例如:

const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_E uint8_t e_map[] = {
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  /*alpha channel*/
  0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  
};

2. 显示图片

将工具转换出来的c文件加载到工程中。

以下图为例,文件名为imgSnowFlake.png,生成imgSnowFlake.c,图像结构体名为imgSnowFlake

2.1 创建

使用lv_img_create创建图像对象句柄。

lv_obj_t* img = lv_img_create(lv_scr_act());

2.2 申明

使用LV_IMG_DECLARE申明。

LV_IMG_DECLARE(imgSnowFlake);

注意,因为VisualStudio模拟器是C++环境,这里要加上extern "C",否则会链接错误,如下:

extern "C" {
    LV_IMG_DECLARE(imgSnowFlake);
}

2.3 设置源

通过函数lv_img_set_src设置图像的源。

void lv_img_set_src(lv_obj_t * obj, const void * src)

而源有3种情况,分别为文件,结构体指针,Symbol,程序会判断是哪种情况。

lv_img_set_src(img, &imgSnowFlake);

 不同格式显示效果如下:

CF_ALPHA_2_BIT: 

CF_ALPHA_4_BIT:

CF_ALPHA_8_BIT(data_size = 65536):

CF_INDEXED_1_BIT(data_size = 8200): 

CF_INDEXED_2_BIT(data_size = 16400): 

CF_INDEXED_4_BIT(data_size = 32832): 

CF_INDEXED_8_BIT(data_size = 66560):

CF_TRUE_COLOR(data_size = 262144):

CF_TRUE_COLOR_ALPHA(data_size = 262144):

CF_RGB565A8(data_size = 196608):显示错误,怀疑是工具有问题,生成的数据是全0。

3. 样式

3.1 设置x/y方向上的偏移

这个偏移是图片内的偏移,不是在屏幕上的偏移。

void lv_img_set_offset_x(lv_obj_t * obj, lv_coord_t x)
void lv_img_set_offset_y(lv_obj_t * obj, lv_coord_t y)

例如x方向偏移-128,可以试试偏移128,显示结果是类似的。

lv_obj_align(img, LV_ALIGN_CENTER, 0, 0);
lv_img_set_offset_x(img, -128);

lv_img_set_offset_y(img, 128);

 

3.2 设置支点

设置图片旋转等操作时的支点,坐标值是以图片的左顶点为原点。

void lv_img_set_pivot(lv_obj_t * obj, lv_coord_t x, lv_coord_t y)

3.3 旋转

void lv_img_set_angle(lv_obj_t * obj, int16_t angle)

角度angle有0.1度精度,所以45.8°设置为458,默认是以图片中心旋转。

lv_img_set_angle(img, 36 * 10);

注意,有些格式不支持旋转,例如INDEXED。

3.4 放大缩小

void lv_img_set_zoom(lv_obj_t * obj, uint16_t zoom)

参数zoom为256时,图片是原始大小,小于256表示缩小,大于256表示放大。

lv_img_set_zoom(img, 128);

lv_img_set_zoom(img, 512);

3.5 抗锯齿

抗锯齿开关通过lv_img_set_antialias开关。启用反锯齿后,转换的质量会更高,但速度会更慢。

void lv_img_set_antialias(lv_obj_t * obj, bool antialias)

3.6 设置图像大小模式

当图像大小和对象大小不同时,主要影响缩放时的显示效果

void lv_img_set_size_mode(lv_obj_t * obj, lv_img_size_mode_t mode)

LV_IMG_SIZE_MODE_VIRTUAL: 缩放不会影响对象的坐标,默认。

LV_IMG_SIZE_MODE_REAL:如果对象大小设置为size_CONTENT,则对象大小等于缩放的图像大小。如果显式设置了对象大小,则放大时将裁剪图像

lv_img_set_zoom(img, 128);
lv_img_set_size_mode(img, LV_IMG_SIZE_MODE_REAL);

lv_img_set_zoom(img, 512);
lv_img_set_size_mode(img, LV_IMG_SIZE_MODE_REAL);

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LVGL学习笔记 21 - 图像Image 的相关文章

  • Javescribt Library Javescript 库 总结

    Yahoo User Interface Library YUI Library YUI is a free open source JavaScript and CSS library for building richly intera
  • 史上最完美的Android沉浸式状态导航栏攻略

    前言 最近我在小破站开发一款新App 叫高能链 我是一个完美主义者 所以不管对架构还是UI 我都是比较抠细节的 在状态栏和导航栏沉浸式这一块 我还是踩了挺多坑 费了挺多精力的 这次我将我踩坑 适配各机型总结出来的史上最完美的Android沉
  • 优秀软件测试工程师必备的8个能力!-(附思维导图)

    结合自己以往的工作经验 自己梳理出来一些材料 绝对原创 绝对干货 优秀的软件测试工程师必备的 8个能力 作为一名软件工程师 需要的能力并不多 但是要成为一名优秀的软件测试工程师 需要的能力就比较多了 自己整理出来8个方面 每个方面都会分成很
  • Java课程设计之学习成绩管理系统

    package System import java awt import java awt event import java io import javax swing import javax swing table Abstract
  • Unity中Shader实现UI去色功能的实现思路

    文章目录 前言 一 在开发过程中 在UI中会涉及一些需要置灰UI的需求 有很多实现的方法 1 做两套纹理 通过程序控制切换 2 使用shader实现对纹理去色 二 这里主要记录用shader实现的思路 1 基础纹理的采样 2 支持组件中的调
  • 如何创建项目

    1 MvvmLight框架的引用 引用 头部选项卡的 工具栏 NuGet 包管理器 管理解决方案的NuGet 程序包 搜索 MVVM Light MvvmLight 作者 Laurent Bugnion GalaSoft 勾选项目 Do n
  • 24.qint64转QString 以及获取文件属性

    qint64转QString 1 qint64 size info size 2 qint64 转QString 3 QString size2 tr 1 arg size 获取文件属性 1 include mainwindow h 2 i
  • UI图片移动

    local x y 0 149 local run 0 local pi0 20 ui 图片2 右移动3 左移动4 ui 7266427303413860920 7266427303413860920 2 72664273034138609
  • 【前端】Vue+Element UI案例:通用后台管理系统-项目总结

    文章目录 相关链接 前言 效果 登录页 首页 管理员的首页 xiaoxiao的首页 用户管理 总结 项目搭建 左侧 CommonAside 上侧 CommonHeader和CommonTag 首页 Home vue 用户管理 User vu
  • ESP32C3 移植ST7735 LVGL

    关于lvgl LVGL是一个C语言编写的免费的开源图形库 其提供了用于嵌入式GUI的各种元素 用户可以利用丰富的图形库资源 在消耗极低内存的情况下构建视觉效果丰富多彩的GUI 只需 64kB 闪存和 8kB RAM 就足以满足简单的用户界面
  • Consul服务注册与发现

    目录 一 Consul简介 一 官网 二 特点 二 安装并运行Consul 一 官网安装说明 二 下载 三 使用开发模式启动 三 服务提供者 四 服务消费者 五 三个注册中心异同点 一 CAP理论 二 AP架构 三 CP架构 一 Consu
  • Android中实现全屏、无标题栏的两种办法(另附Android系统自带样式的解释)

    在进行UI设计时 我们经常需要将屏幕设置成无标题栏或者全屏 要实现起来也非常简单 主要有两种方法 配置xml文件和编写代码设置 1 在xml文件中进行配置 在项目的清单文件AndroidManifest xml中 找到需要全屏或设置成无标题
  • Photoshop、Illustrator、Sketch哪个更好

    以前在交流组经常能看到大家争论哪个设计软件好 到底是你的吗 Illustrator好还是我的CorelDRAW或者他的Photoshop强大 但是跟着UI流行的设计 Sketch软件也加入了争论 让我们和你分享一下这篇文章 让我们来看看平面
  • Qt 信号与槽

    Qt 信号与槽 在这章节里 我们学习 Qt 的信号与槽 这里分一个章节来学习这个 Qt 的信号与槽 可见 这个信号与槽有多么重要 在学习 Qt 的过程中 信号与槽是必不可少的部分 也是 Qt 编程的 基础 是 Qt 编程的一大创新 其实与
  • 探索创意无限的Photoshop CC 2020Mac/Win版

    作为一款功能强大的图像处理软件 Photoshop CC 2020 简称PS 2020 在全球范围内备受设计师 摄影师和艺术家的喜爱和推崇 它不仅为用户提供了丰富多样的工具和功能 还不断推出新的创意特效和改进的功能 让用户的创意无限延展 首
  • 【UI自动化测试】Jenkins配置

    前一段时间帮助团队搭建了UI自动化环境 这里将Jenkins环境的一些配置分享给大家 背景 团队下半年的目标之一是实现自动化测试 这里要吐槽一下 之前开发的测试平台了 最初的目的是用来做接口自动化测试和性能测试 但由于各种原因 接口自动化测
  • WPF应用实战开发指南 - 如何实现动态内容展示

    在我们开发一些复杂信息的时候 由于需要动态展示一些相关信息 因此我们需要考虑一些控件内容的动态展示 可以通过动态构建控件的方式进行显示 如动态选项卡展示不同的信息 或者动态展示一个自定义控件的内容等等 目的就是能够减少一些硬编码的处理方式
  • 独立搭建UI自动化测试框架分享

    今天给大家分享一个selenium testng maven ant的UI自动化 可以用于功能测试 也可按复杂的业务流程编写测试用例 今天此篇文章不过多讲解如何实现CI CD 只讲解自己能独立搭建UI框架 如果有其他好的框架也可以联系我 分
  • Mac版 Photoshop 2021---PS2021

    Adobe Photoshop 2021是一款强大的图像处理软件 它可以帮助用户进行各种图像编辑 修饰和合成工作 这款软件拥有先进的图像处理技术 支持多种图像格式 可以轻松实现各种复杂的图像处理任务 它还提供了丰富的滤镜和工具 使用户可以自
  • 界面控件DevExpress WPF属性网格 - 让应用轻松显示编辑各种属性事件

    DevExpress WPF Property Grid 属性网格 灵感来自于Visual Studio Visual Studio启发的属性窗口 对象检查器 让在WPF应用程序显示和编辑任何对象的属性和事件变得更容易 P S DevExp

随机推荐

  • vue 假期工作日设置_假期申请第8天2月25日

    vue 假期工作日设置 It s that time again project week 又是时候了 项目周 This time around the project week started on Monday August 24th
  • centos7换源

    1 首先备份系统自带yum源配置文件 etc yum repos d CentOS Base repo mv etc yum repos d CentOS Base repo etc yum repos d CentOS Base repo
  • import cv2出现“ImportError: DLL load failed: 找不到指定的模块”

    2 1 将cv2 cp36 win amd64 pyd 文件复制一份 防止一会儿改完不行 又不知道原来是什么了 更改内容如下 import importlib from cv2 import 前面去掉点之后变成这样 from data im
  • 一文让你彻底了解Linux内核文件系统

    一 文件系统特点 文件系统要有严格的组织形式 使得文件能够以块为单位进行存储 文件系统中也要有索引区 用来方便查找一个文件分成的多个块都存放在了什么位置 如果文件系统中有的文件是热点文件 近期经常被读取和写入 文件系统应该有缓存层 文件应该
  • 用Go构建一个简单的区块链

    在本教程中 我将尝试通过帮助你在Go中编写简单的区块链来揭开区块链的广义概念 在本教程中 你应该能够 理解区块链术语 创建自己的简单区块链 了解什么是区块以及如何创建块 了解如何维护区块链的完整性 区块链 一种数字分类帐 以较小的集合排列
  • 数据诊断模型,该怎么搭建?

    你会用数据下判断吗 你怎么确定你的判断是准确的 现在业务说你判断错了 你怎么应对 用数据下判断 是看似简单 实则极大影响数据分析结果的一个问题 同样是本月销售业绩1000万 如果判断是 业绩很好 那么下一步的分析就是总结成功经验 如果判断是
  • 悟空crm php 部署,悟空crm开源版本环境搭建

    安装步骤 JDK需要预先安装 下载后执行install sh 链接 link 硬件配置 因为只有一台机器所以安装在一台机器上了 cpu 内存 硬盘 系统 8核 32G ssd100G centos7 基础软件 mysql安装 1 卸载mar
  • DataGrip数据库连接失败:DBMS: MySQL (无版本)区分大小写: 普通形式=mixed, 分隔形式=exactConnection refused: connect.

    查看任务管理器 服务 mysql服务是否正在运行 右键可控制关闭运行
  • 如何查看视图的sql语句

    select text from syscomments s1 join sysobjects s2 on s1 id s2 id where name 视图名称 前提条件是视图没有被加密 有权限 转载于 https www cnblogs
  • Flink on Zeppelin-1

    准备工作 下载Zeppelin 0 9 0 preview1 或者下载 除了下载Flink的标准release 如果你要使用Flink on Yarn模式或者连接Hive 那么你还需要下载其他Flink组件 flink hadoop com
  • AutoGPT太火了,无需人类插手自主完成任务,ChatGPT 已经过时了?

    转载自 机器之心Pro 原文链接 AutoGPT太火了 无需人类插手自主完成任务 GitHub2 7万星 OpenAI 的 Andrej Karpathy 都大力宣传 认为 AutoGPT 是 prompt 工程的下一个前沿 近日 AI 界
  • Vue3 解决电脑分辨率及缩放导致页面变形的问题

    Vue3 解决电脑分辨率不同导致的页面变形问题 前言 电脑缩放问题解决 屏幕分辨率问题解决 前言 最近在做一个项目 突然发现由于调整电脑的分辨率导致页面变形的问题 正常电脑显示的是100 当调整电脑缩放至125 时 页面发生变形 由于css
  • springboot相关图形

    一 springboot的需求调研 需求分析 即应用场景 开发中如果使用spring springmvc spring集成第三方框架 如springmvc mybatis等 都需要编写大量的xml配置文件 二 框架的设计思想 不需要配置文件
  • Apache Kafka Deep 解析

    1 首先了解主题 经纪人 生产者和消费者等主要术语 下图说明了主要术语 表格详细描述了图表组件 在上图中 主题配置为三个分区 分区1具有两个偏移因子0和1 分区2具有四个偏移因子0 1 2和3 分区3具有一个偏移因子0 副本的id与承载它的
  • c++输出爱心小程序

    输入数值可以得到不同大小的爱心形状 include
  • STM32——FATFS文件基础知识

    一 探索者STM32开发板 通过底面的SD卡接口与SD卡连接 硬件连接原理图 PC8 9 11分时 二 SD卡驱动代码 1 SD Init初始化函数 2 SD ReadDisk读函数 3 SD WriteDisk写函数 1 文件系统是什么
  • @RequestHeader注解详解

    SpringMVC提供了 RequestHeader注解 可以将请求头中变量值映射到控制器的参数中 如下例子 将请求头中的变量值token映射到控制器参数token中 GetMapping checkUserLoginInfo public
  • Linux骚操作第十七话之PAM验证、sudo和开关机控制等

    文章目录 前言 一 PAM安全认证流程 二 提权 三 开关机安全控制 四 系统弱口令检测 五 网络端口扫描 总结 前言 在工作环境中 一些用户的权限都是由root系统管理员通过sudo放权给予 这样做的好处是防止某些用户存在故意之心 破坏系
  • Git:利用Git进行多人协作的场景模拟

    文章目录 场景一 场景二 解决一些后续问题 场景一 Git是一个多人协作下完成的操作 因此Git是需要进行一些多人协作的场景的 那么这里就使用Linux和Windows两个平台进行模拟实现两个用户进行的协作 首先把仓库克隆到本地 再加入两个
  • LVGL学习笔记 21 - 图像Image

    目录 1 图像来源 1 1 图片源文件 1 2 颜色格式 1 2 1 LV IMG CF ALPHA 1 2 4 8BIT 1 2 2 LV IMG CF INDEXED 1 2 4 8BIT 1 2 3 LV IMG CF RAW ALP