武汉建站多少钱/关键词优化是什么工作

武汉建站多少钱,关键词优化是什么工作,舆情分析研判报告,道真住房与城乡建设局网站一、mmap 内存映射 内存映射的作用是把硬件设备的地址,映射到应用层的内存空间,这样用户就可以跨越系统层访问linux的硬件设备。 1、man 2 mmap 查看映射函数接口 NAMEmmap, munmap - map or unmap files or devices into memory映射 解除…

一、mmap 内存映射        

        内存映射的作用是把硬件设备的地址,映射到应用层的内存空间,这样用户就可以跨越系统层访问linux的硬件设备。

1、man 2 mmap 查看映射函数接口

NAMEmmap, munmap - map or unmap    files or devices into memory映射   解除映射  文件  或 设备     到   内存                       
SYNOPSIS#include <sys/mman.h>void *mmap(void *addr,  //内存首地址,NULL 系统自动选择 size_t length,  //映射空间的大小,必须大于0int prot,  //👉 PROT_READ | PROT_WRITEint flags,  // MAP_SHARED 其他进程可见     MAP_PRIVATE  其他进程不可见int fd,  // 文件描述符 off_t offset); // 偏移量 ,默认为  0 即可 返回值: 成功   映射地址,void *万能指针,用于后续用户强制转换类型! 失败    MAP_FAILED        prot操作权限:
PROT_EXEC  可执行PROT_READ  可读PROT_WRITE 可写PROT_NONE  没有权限                ⭐映射LCD设备 
void *mmap(NULL,800*480*4,PROT_READ | PROT_WRITE,MAP_SHARED ,lcd_fd,0)      //解除映射                     
int munmap(void *addr, size_t length);
addr:映射地址 
length:映射内存的大小 

2、内存映射demo

#include <stdio.h>
#include <sys/mman.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main()
{int lcd_fd = open("/dev/fb0", O_RDWR);if (lcd_fd < 0){printf("LCD设备打开失败\n");return -1;}// 映射LCD设备void *p = mmap(NULL, 800 * 480 * 4, PROT_READ | PROT_WRITE, MAP_SHARED, lcd_fd, 0);if (p == MAP_FAILED){printf("映射失败\n");return -1;}else{printf("映射成功\n");}
}

3、映射地址与LCD关系

#if ONE// 把映射地址强制转换int *lcd = p;while (1){// 一个一个像素点赋值到LCD设备中for (int x = 0; x < 800 * 480; x++){lcd[x] = 0x0000ff;}sleep(1);for (int x = 0; x < 800 * 480; x++){lcd[x] = 0x00ff00;}sleep(1);}
#endif#if TWO// 把映射地址强制转换int(*lcd)[800] = p;for (int y = 0; y < 480; y++){for (int x = 0; x < 800; x++){lcd[y][x] = 0xff00ff;}}#endif

二、lcd显示bmp图片

1、计算机常见的图片格式

JPG(JPEG)、PNG和BMP是常见的图像文件格式,它们各有特点和适用场景:
JPG(JPEG)
压缩方式:JPEG使用有损压缩,这意味着在压缩过程中会丢失一些图像数据,尤其是当压缩比率较高时。
适用场景:由于有损压缩,JPEG文件通常比PNG和BMP文件小,适合网络传输和存储空间有限的情况。它非常适合照片和复杂图像,因为这些图像的微小失真通常人眼难以察觉。
颜色深度:JPEG支持最高为24位的颜色深度。
透明度:JPEG不支持透明背景。
PNG(Portable Network Graphics)
压缩方式:PNG使用无损压缩,它可以在不损失任何图像数据的情况下压缩图像。
适用场景:PNG非常适合网页设计、图标和其他需要高保真度图像的场合。它的文件大小通常比JPEG大,但比BMP小。
颜色深度:PNG支持最高达48位的真彩色,并且支持灰度图像、索引颜色图像。
透明度:PNG支持透明背景和半透明效果,这是它的一大优势。
BMP(Bitmap)
压缩方式:BMP通常不使用压缩,它直接存储每个像素的颜色信息,因此文件大小通常很大。
适用场景:BMP格式因其简单和直接性在某些特定场合(如Windows系统中的图标)被使用,但由于文件体积大,不适合网络传输。
颜色深度:BMP支持多种颜色深度,包括24位和32位真彩色。
透明度:标准的BMP格式不支持透明度,但Windows位图可以包含alpha通道来支持透明度。
总结来说,选择哪种格式取决于图像的使用场景和对图像质量的要求。如果需要小文件体积且可以接受一定的质量损失,JPEG是不错的选择;如果需要高保真度和透明度支持,PNG是更好的选择;而BMP由于文件体积大,通常只在特定场合使用。

2、BMP 图片格式

通过上述方法调整图片的格式。

bmp文件头

//bmp文件头结构体-》占用14个字节
struct bitmap_header
{int16_t type;int32_t size; // 图像文件大小int16_t reserved1;int16_t reserved2;int32_t offbits; // bmp图像数据偏移量
}__attribute__((packed));//bmp位图信息头结构体 -》占用40个字节
struct bitmap_info
{int32_t size;   // 本结构大小    int32_t width;  // 图像宽int32_t height; // 图像高int16_t planes;int16_t bit_count; // 色深int32_t compression;int32_t size_img; // bmp数据大小,必须是4的整数倍int32_t X_pel;int32_t Y_pel;int32_t clrused;int32_t clrImportant;
}__attribute__((packed));用户在读取像素数据之前,应该把上述的54个字节先读取出来,再读取像素数据! 
__attribute__((packed)); 把结构体压实,不进行任何的字节对齐方式!  
bmp头数据处理demo
#include <stdio.h>
#include <sys/types.h> //在该头文件中定义了  int16_t  int32_t
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>// bmp文件头结构体-》占用14个字节
struct bitmap_header
{int16_t type;int32_t size; // 图像文件大小int16_t reserved1;int16_t reserved2;int32_t offbits; // bmp图像数据偏移量
} __attribute__((packed));// bmp位图信息头结构体 -》占用40个字节
struct bitmap_info
{int32_t size;   // 本结构大小int32_t width;  // 图像宽int32_t height; // 图像高int16_t planes;int16_t bit_count; // 色深int32_t compression;int32_t size_img; // bmp数据大小,必须是4的整数倍int32_t X_pel;int32_t Y_pel;int32_t clrused;int32_t clrImportant;
} __attribute__((packed));int main()
{printf("sizeof(struct bitmap_header)=%ld\n", sizeof(struct bitmap_header)); // 12printf("sizeof(struct bitmap_info)=%ld\n", sizeof(struct bitmap_info));     // 40// 1.打开图片文件int bmp_fd = open("tm.bmp", O_RDWR);if (bmp_fd < 0){printf("打开图片失败\n");return -1;}// 2.读取14个字节头数据struct bitmap_header head;read(bmp_fd, &head, 14);struct bitmap_info info;read(bmp_fd, &info, 40);int widht = info.width;int height = info.height;int bbp = info.bit_count;printf("大小 %d 宽度 %d 高度 %d 色深 %d\n", head.size, widht, height, bbp);
}

3、bmp 像素数据处理

// 像素缓存区
char rgb[widht * 3 * height];
read(bmp_fd, rgb, sizeof(rgb));// 把rgb的数据转换为argb数据
char argb[800 * 4 * 480];
for (int i = 0; i < 800 * 480; i++)
{argb[0 + i * 4] = rgb[0 + i * 3];argb[1 + i * 4] = rgb[1 + i * 3];argb[2 + i * 4] = rgb[2 + i * 3];argb[3 + i * 4] = 0;
}

4、LCD 映射显示argb数据

#include <stdio.h>
#include <sys/mman.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>// bmp文件头结构体-》占用14个字节
struct bitmap_header
{int16_t type;int32_t size; // 图像文件大小int16_t reserved1;int16_t reserved2;int32_t offbits; // bmp图像数据偏移量
} __attribute__((packed));// bmp位图信息头结构体 -》占用40个字节
struct bitmap_info
{int32_t size;   // 本结构大小int32_t width;  // 图像宽int32_t height; // 图像高int16_t planes;int16_t bit_count; // 色深int32_t compression;int32_t size_img; // bmp数据大小,必须是4的整数倍int32_t X_pel;int32_t Y_pel;int32_t clrused;int32_t clrImportant;
} __attribute__((packed));int main()
{int lcd_fd = open("/dev/fb0", O_RDWR);if (lcd_fd < 0){printf("LCD设备打开失败\n");return -1;}// 映射LCD设备void *p = mmap(NULL, 800 * 480 * 4, PROT_READ | PROT_WRITE, MAP_SHARED, lcd_fd, 0);if (p == MAP_FAILED){printf("映射失败\n");return -1;}else{printf("映射成功\n");}// 1.打开图片文件int bmp_fd = open("tm.bmp", O_RDWR);if (bmp_fd < 0){printf("打开图片失败\n");return -1;}// 2.读取14个字节头数据struct bitmap_header head;read(bmp_fd, &head, 14);struct bitmap_info info;read(bmp_fd, &info, 40);int widht = info.width;int height = info.height;int bbp = info.bit_count;printf("大小 %d 宽度 %d 高度 %d 色深 %d\n", head.size, widht, height, bbp);// 像素缓存区char rgb[widht * 3 * height];read(bmp_fd, rgb, sizeof(rgb));// 把rgb的数据转换为argb数据char argb[800 * 4 * 480];for (int i = 0; i < 800 * 480; i++){argb[0 + i * 4] = rgb[0 + i * 3];argb[1 + i * 4] = rgb[1 + i * 3];argb[2 + i * 4] = rgb[2 + i * 3];argb[3 + i * 4] = 0;}// 转换映射地址char *lcd = p;for (int i = 0; i < 800 * 4 * 480; i++){lcd[i] = argb[i]; // 把argb这些数据放入LCD映射地址}// 关闭图片close(bmp_fd);close(lcd_fd);// 解除映射munmap(lcd, 800 * 4 * 480);
}

至此,希望看完这篇文章的你有所收获,我是Bardb,译音八分贝,道友,下期见!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/71124.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

建筑兔零基础人工智能自学记录34|深度学习与神经网络2

1、人工神经网络ANN 从生物课上学到的有关神经元、突触的生物神经网络&#xff0c;被模仿出了简化的人工神经网络&#xff08;ANN,artificial neural network&#xff09;。 ANN结构为&#xff1a;输入层、隐藏层、输出层 人工神经元&#xff1a; 基于生物神经元的数学模型 …

手机放兜里,支付宝“碰一下”被盗刷?

大家好&#xff0c;我是小悟。 近期&#xff0c;网络上关于“支付宝‘碰一下’支付易被盗刷”的传言甚嚣尘上&#xff0c;不少用户对此心生疑虑。 首先&#xff0c;要明确一点&#xff1a;“碰一下”支付并不会像某些传言中所描述的那样容易被隔空盗刷。这一观点已经得到了支付…

最新版本SpringAI接入DeepSeek大模型,并集成Mybatis

当时集成这个环境依赖冲突&#xff0c;搞了好久&#xff0c;分享一下依赖配置 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instan…

Spring Boot 流式响应豆包大模型对话能力

当Spring Boot遇见豆包大模型&#xff1a;一场流式响应的"魔法吟唱"仪式 一、前言&#xff1a;关于流式响应的奇妙比喻 想象一下你正在火锅店点单&#xff0c;如果服务员必须等所有菜品都备齐才一次性端上来&#xff0c;你可能会饿得把菜单都啃了。而流式响应就像贴…

例子 DQN + CartPole: 深入思考一下,强化学习确实是一场智能冒险之旅!

强化学习的概念 在技术人员眼里&#xff0c;深度学习、强化学习&#xff0c;或者是大模型&#xff0c;都只是一些算法。无论是简单&#xff0c;还是复杂&#xff0c;我们都是平静的看待。当商业元素日益渗透进技术领域&#xff0c;人人言必称大模型的时候。技术人该反思一下&a…

RNN实现精神分裂症患者诊断(pytorch)

RNN理论知识 RNN&#xff08;Recurrent Neural Network&#xff0c;循环神经网络&#xff09; 是一种 专门用于处理序列数据&#xff08;如时间序列、文本、语音、视频等&#xff09;的神经网络。与普通的前馈神经网络&#xff08;如 MLP、CNN&#xff09;不同&#xff0c;RNN…

Lua的table(表)

Lua表的基本概念 Lua中的表&#xff08;table&#xff09;是一种多功能数据结构&#xff0c;可以用作数组、字典、集合等。表是Lua中唯一的数据结构机制&#xff0c;其他数据结构如数组、列表、队列等都可以通过表来实现。 表的实现 Lua的表由两部分组成&#xff1a; 数组部分…

Linux-基本指令3

一.grep 语法&#xff1a; grep [选项] 搜寻字符串 ⽂件 功能&#xff1a;在⽂件中搜索字符串&#xff0c;将找到的⾏打印出来 常⽤选项&#xff1a; -i &#xff1a;忽略⼤⼩写的不同&#xff0c;所以⼤⼩写视为相同 -n &#xff1a;顺便输出⾏号 -v &#xff1a;反向选择&…

GPIO(嵌入式学习)

GPIO 通用输入输出口&#xff1a; 可分为八种输入输出模式 输出模式 下端可控制端口输出高低电平&#xff0c;用以驱动LED&#xff0c;控制蜂鸣器&#xff0c;模拟通信协议输出时序 输入模式 读取高低电平或电压&#xff0c;用与读取按键输入&#xff0c;外界模块电平信号…

【构建工具】Gradle Kotlin DSL中的大小写陷阱:BuildConfigField

在Android开发当中&#xff0c;BuildConfig是一个非常有用的功能&#xff0c;它允许我们在构建过程中定义常量&#xff0c;并在运行时使用它们。But&#xff01;&#xff01;当我们从传统的Groovy DSL迁移到Kotlin DSL时或者被Android Studio坑的时候&#xff0c;有一些细微的差…

【Uniapp-Vue3】开发userStore用户所需的相关操作

在项目根路径下创建的stores文件夹中创建user.js文件 并将以下内容复制到user.js中 import {ref} from "vue" import { defineStore } from pinia; const uniIdCo uniCloud.importObject("uni-id-co") const db uniCloud.database(); const usersTable…

Redis分布式锁的实现(Redission)

写在前面 本人在学习Redis过程中学习到分布式锁时太多困惑和疑难杂点 需要总结梳理思路 以下思路都是最简单最基本的思路 主要用到Redission工具类 会涉及到看门狗机制等 本文内容部分引自Javaguide,小林coding等热门八股 用于个人学习用途 分布式锁介绍 对于单机多线程来说…

基于Apollo对配置类的热更新优化

背景 关于配置的热更新&#xff0c;apollo 通过com.ctrip.framework.apollo.spring.annotation.SpringValueProcessor 处理带Value的方法或字段&#xff0c;通过监听变更事件&#xff0c;采用反射去更新对应的值 但这个功能仅仅用于单个属性&#xff0c;当我有一组有关联关系…

【AD】3-5 元件在原理图中的基本操作2

1.导线连接 选择放置->线&#xff08;CtrlW&#xff09;&#xff0c;或者直接点击横条处&#xff0c;建议使用直角走线 注意&#xff1a;下图中的线不具有电气连接属性&#xff0c;只是单纯的线 双击导线&#xff0c;进行设置导线粗细及颜色 2.网络标签 放置->网络标…

vim:基础配置

Vim 配置清单 设置行号显示 set number 设置相对行号&#xff08;可选&#xff09; set relativenumber设置制表符为4个空格 set tabstop4 设置自动缩进 set autoindent " 启用语法高亮 syntax on" 设置背景颜色&#xff08;可选&#xff0c;根据终端或GUI Vi…

day02_Java基础

文章目录 day02_Java基础一、今日课程内容二、数组&#xff08;熟悉&#xff09;1、定义格式2、基本使用3、了解数组的内存图介绍4、数组的两个小问题5、数组的常见操作 三、方法&#xff08;熟悉&#xff09;1、定义格式2、方法重载overload 四、面向对象&#xff08;掌握&…

【UCB CS 61B SP24】Lecture 17 - Data Structures 3: B-Trees学习笔记

本文以 2-3-4 树详细讲解了 B 树的概念&#xff0c;逐步分析其操作&#xff0c;并用 Java 实现了标准的 B 树。 1. 2-3 & 2-3-4 Trees 上一节课中讲到的二叉搜索树当数据是随机顺序插入的时候能够使得树变得比较茂密&#xff0c;如下图右侧所示&#xff0c;时间复杂度也就…

【手撕算法】支持向量机(SVM)从入门到实战:数学推导与核技巧揭秘

摘要 支持向量机&#xff08;SVM&#xff09;是机器学习中的经典算法&#xff01;本文将深入解析最大间隔分类原理&#xff0c;手撕对偶问题推导过程&#xff0c;并实战实现非线性分类与图像识别。文中附《统计学习公式手册》及SVM调参指南&#xff0c;助力你掌握这一核心算法…

西门子S7-1200比较指令

西门子S7-1200 PLC比较指令学习笔记 一、比较指令的作用 核心功能&#xff1a;用于比较两个数值的大小或相等性&#xff0c;结果为布尔值&#xff08;True/False&#xff09;。典型应用&#xff1a; 触发条件控制&#xff08;如温度超过阈值启动报警&#xff09;数据筛选&…

solidwork智能尺寸怎么对称尺寸

以构造轴为中心线就能画智能尺寸的对称尺寸。先点击边再点击构造线