在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Linux開發_文件目錄操作介紹、創建BMP圖片

DS小龍哥-嵌入式技術 ? 2022-09-17 15:44 ? 次閱讀

【摘要】 介紹C語言文件編程,創建BMP圖片,BMP圖片結構介紹,介紹目錄接口編程,Makefile知識點。

任務1: 文件操作函數學習

??學習兩套函數:

(1)?C語言下標準文件操作函數。fopen、fclose、fread、fwrite (適合操作普通文件)

針對文件指針操作。

(2)?Linux下專用的文件操作函數。open、close、read、write (適合操作設備文件、也可以操作普通文件)

針對文件描述符操作。

??如何檢測文件是否讀取到結尾? 判斷讀函數的返回值。

??文件操作相關的練習作業

1.?(編碼)創建一張BMP圖片,顏色可以指定。

2.?模擬du命令,可以查看指定文件的大小,可以將文件大小打印出來。

3.?文件加密和解密。 密碼: 數字方式、字符串方式

(1)?加密方式: 異或加密

擴展: 加密方式: MD5加密

擴展作業: 實現文件的壓縮和解壓,模擬tar命令。

創建BMP圖片:

#include 
#include 

/* 必須在結構體定義之前使用,這是為了讓結構體中各成員按1字節對齊 */
#pragma pack(1)

/*需要文件信息頭:14個字節 */
struct tagBITMAP_FILE_HEADER
{
	unsigned short bfType;   //保存圖片類似。 'BM' -- 0x4d42
	unsigned int  bfSize;      //圖片的大小
	unsigned short bfReserved1;
	unsigned short bfReserved2;
	unsigned int  bfOffBits;  //RGB數據偏移地址
};

/* 位圖參數信息 */
struct tagBITMAP_INFO_HEADER { 
	unsigned long  biSize;      //結構體大小
	unsigned long  biWidth;		//寬度
	unsigned long  biHeight;	//高度
	unsigned short biPlanes;
	unsigned short biBitCount;	//顏色位數
	unsigned long  biCompression;
	unsigned long  biSizeImage;
	unsigned long  biXPelsPerMeter;
	unsigned long  biYPelsPerMeter;
	unsigned long  biClrUsed;
	unsigned long  biClrImportant;
};

/*
函數功能: 創建一張BMP圖片
函數參數:
		char *name 文件名稱
		int w 寬度
		int h 高度
		int c 顏色位數
函數返回值: 0表示成功
*/
int CreateBmpImage(char *name,int w,int h,int c)
{
	/*1. 創建文件*/
	FILE *file=fopen(name,"wb");
	if(file==NULL)return 1;
	
	/*2. 創建BMP文件頭*/
	struct tagBITMAP_FILE_HEADER head;
	memset(&head,0,sizeof(struct tagBITMAP_FILE_HEADER));
	head.bfType=0x4d42; //BMP圖片的類型
	head.bfSize=sizeof(struct tagBITMAP_FILE_HEADER)+sizeof(struct tagBITMAP_INFO_HEADER)+w*h*3;
	head.bfOffBits=sizeof(struct tagBITMAP_FILE_HEADER)+sizeof(struct tagBITMAP_INFO_HEADER);
	if(fwrite(&head,1,sizeof(struct tagBITMAP_FILE_HEADER),file)!=sizeof(struct tagBITMAP_FILE_HEADER))
	{
		return 2;
	}
	
	/*3. 創建BMP圖像參數信息*/
	struct tagBITMAP_INFO_HEADER info;
	memset(&info,0,sizeof(struct tagBITMAP_INFO_HEADER));
	info.biSize=sizeof(struct tagBITMAP_INFO_HEADER);
	info.biWidth=w;
	info.biHeight=h;
	info.biBitCount=24;
	info.biPlanes=1;
	if(fwrite(&info,1,sizeof(struct tagBITMAP_INFO_HEADER),file)!=sizeof(struct tagBITMAP_INFO_HEADER))
	{
		return 3;
	}
	
	/*4. 圖片顏色數據填充*/
	int i,j;
	for(i=0;i;i++)>

BMP圖片練習文件操作(專題練習):

1.?BMP圖片數據取模,模擬圖片取模軟件。(選擇16位或者24位取模方式)

2.?BMP圖片放大縮小,根據輸入的尺寸放大縮小圖片。

3.?實現圖片4種翻轉效果: 上、下、左、右。

文件系統:

1.?文件系統本身就是一套上層(軟件層)算法,底層有與硬件交互的接口。

硬件: 磁盤、U盤、SD卡 (扇區)…….

2.?文件本身屬于一個容器,沒有規定存放什么類型的數據。

3.?文件指針(光標位置),會隨著讀寫函數移動。

4.?文件讀寫權限: 打開文件需要選擇正確的權限。

??文件格式介紹:

圖片: BMP、PNG、JPG/JPEG、GIF、ICO

音頻/視頻: MP3、MP4

文本: txt(字符串)

文檔: doc

??Main函數傳遞參數

#include

int main(int argc,char **argv)

{

//argc :表示參數的數量

//argv :二維指針,指向傳入的每一個字符串首地址

int i;

for(i=0;i;i++)<>

{

printf("argv[%d]=%s\n",i,argv[i]);

}

return 0;

}

目錄過濾:

#include 
#include 
#include 
#include 
#include 

// ./app  <.mp3>

/*
函數功能: 輸出指定目錄下指定指定后綴的文件名稱+路徑
./app /bmp/jpg/ .mp3
*/
int PrintDirName(char *DirName,char *str)
{
	/*1. 打開目錄*/
	DIR *dirp=opendir(DirName);
	if(dirp==NULL)return 1;
	
	/*2. 循環讀取目錄*/
	struct dirent *file_p=NULL;
	char *findstr=NULL;
	char *addr_p=NULL; //存放最終完整的文件名稱
	while(file_p=readdir(dirp))
	{
		char *findstr=strstr(file_p->d_name,str);
		if(findstr)//123.mp3  123.mp3.mp4 123.mp3.txt
		{
			//比較后綴
			if(strcmp(findstr,str)==0)
			{
				addr_p=malloc(strlen(DirName)+strlen(file_p->d_name)+1);
				strcpy(addr_p,DirName); //拼接目錄
				strcat(addr_p,file_p->d_name);//拼接文件名稱
				printf("文件完整路徑=%s\n",addr_p);
				free(addr_p); //釋放空間
			}
		}
	}
	/*3. 關閉目錄*/
	closedir(dirp);
	return 0;
}

int main(int argc,char **argv)
{
	if(argc!=3)
	{
		printf("./app  <.mp3>\n");
		return 0;
	}
	
	PrintDirName(argv[1],argv[2]);
	return 0;
}

任務2: 目錄相關操作函數

創建目錄、打開目錄、讀取目錄。

??需求: 獲取指定目錄下指定后綴的所有文件,并且輸出每個文件的路徑信息。

作業: 拷貝目錄下所有文件(指定后綴的文件)到指定目錄下,考慮一層目錄。

擴展: 遞歸拷貝,考慮多層目錄。

任務3: Makefile文件

poYBAGMlO8uAcYqWAAB494mxKhU924.png

作業:

1.?使用Makefile建立工程,只需要寫一個Makefile文件。

2.?使用Makefile建立工程,每個目錄下就寫一個Makefile文件。

app:print.o main.o sum.o
	gcc main.o print.o sum.o -o app
print.o:print.c
	gcc print.c -c
main.o:main.c
	gcc main.c -c
sum.o:sum.c
	gcc sum.c -c
clean:
	rm app *.o -f
;i++)>
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11310

    瀏覽量

    209652
  • C語言
    +關注

    關注

    180

    文章

    7605

    瀏覽量

    136959
  • BMP
    BMP
    +關注

    關注

    0

    文章

    48

    瀏覽量

    17073
收藏 人收藏

    評論

    相關推薦

    Linux中的用戶與創建

    Linux中的用戶與創建 用戶的類型 超級管理用戶: 權限最高的用戶(uid:0) #uid:是用戶的身份證號,Linux系統只認uid 普通用戶: 權限受限的用戶(uid:1000-60000
    的頭像 發表于 12-20 14:24 ?237次閱讀
    <b class='flag-5'>Linux</b>中的用戶與<b class='flag-5'>創建</b>

    嵌入式學習-飛凌嵌入式ElfBoard ELF 1板卡-LCD顯示圖片編程示例之開發板測試

    制作好的bmp格式的圖片存放在了該路徑下,可直接使用。1)右擊圖片,打開方式選擇畫圖。2)示例圖片分辨率為800x480,若需修改分辨率,按下圖進行
    發表于 11-26 09:39

    飛凌嵌入式ElfBoard ELF 1板卡-LCD顯示圖片編程示例之開發板測試

    制作好的bmp格式的圖片存放在了該路徑下,可直接使用。1)右擊圖片,打開方式選擇畫圖。2)示例圖片分辨率為800x480,若需修改分辨率,按下圖進行
    發表于 11-25 09:36

    《DNK210使用指南 -CanMV版 V1.0》第二十五章 LCD圖片顯示實驗

    ,可以幫助開發者快速的對圖像進行一些簡單或復雜的處理,在后續的章節中會對image模塊進行詳細的介紹。25.4 運行驗證將DNK210開發板連接CanMV IDE,同時將實驗例程目錄
    發表于 10-23 09:34

    linux操作系統安裝步驟 linux操作系統的特點及組成

    ,確保你的計算機滿足最低系統要求,并且你已經備份了所有重要數據。 2. 下載Linux發行版 訪問Ubuntu官方網站或其他Linux發行版的官方網站,下載最新版本的ISO文件。 3. 創建
    的頭像 發表于 10-21 11:24 ?572次閱讀

    Linux開發怎么學?

    令是使用 Linux 的基礎,包括文件操作目錄管理、用戶管理、進程管理、網絡管理等方面。可以通過閱讀相關的書籍、在線教程等方式學習。以下是常用的命令實例。 # 列出當前
    發表于 10-10 14:34

    飛凌嵌入式ElfBoard ELF 1板卡-Linux C接口編程入門之文件I/O

    目錄目錄也被視為文件,用于組織和存儲其他文件目錄。通過目錄
    發表于 10-09 15:38

    Linux文件系統的掛載過程

    Linux文件系統(rootfs)是Linux系統中所有其他文件系統和目錄的起點,它是內核啟動時掛載的第一個
    的頭像 發表于 10-05 16:50 ?434次閱讀

    全志Linux磁盤操作基礎命令

    文件大小。 [ubuntu@book:~]$ dudir -h --max-depth=1 //以比較直觀的方式顯示dir目錄并只顯示目錄深度為1級。 dd命令 dd命令用于數據的讀取轉換等
    發表于 09-02 10:47

    鴻蒙開發文件管理:【@ohos.environment (目錄環境能力)】

    該模塊提供環境目錄能力,獲取內存存儲根目錄、公共文件目錄的JS接口。
    的頭像 發表于 06-13 10:27 ?532次閱讀
    鴻蒙<b class='flag-5'>開發文件</b>管理:【@ohos.environment (<b class='flag-5'>目錄</b>環境能力)】

    使用emwin解碼bmp圖片,為什么放大顯示不行?

    ; // 創建內存設備,并將BMP圖片繪制到此內存設備里面,此內存設備要在主程序中用到 //所以退出此函數前,不要釋放。 hMemBMP = GUI_MEMDEV_CreateEx(0, 0, XSize
    發表于 04-29 06:00

    使用iconview控件時,能否直接從sd卡中讀取bmp格式的圖片進行顯示啊 ?

    請教下,使用 iconview 控件時,能否直接從sd卡中讀取bmp格式的圖片進行顯示啊 ? 我看很多貌似都是 先把 圖片文件轉換為 .c 或者是 .dat 格式的,有沒有什么方法在
    發表于 04-28 08:11

    飛凌嵌入式ElfBoard ELF 1板卡-ubuntu創建共享文件

    ELF1、ELF1S開發板_軟件教程_V1》“2.1.4.3 VMware Tools 安裝”小節安裝VMware Tools。1.首先在Windows下創建共享文件夾,這里我命名為ELF1-share
    發表于 04-18 11:14

    PackagingTool_x64_v2.0.1.0圖片轉檔打包二進制文件合并字庫生成圖片軟件介紹

    轉換結果所在目錄,轉換之后的JPG即可作為RA8889的圖片源文件進行打包。 四、工具選項【點陣字庫轉成圖片】,可把點陣字庫轉為BMP或者JPG圖片
    發表于 02-29 09:30

    如何創建重疊的封裝文件

    。它使用多層次的抽象,允許開發人員實現數據的封裝和隱藏,并確保訪問這些數據的方式是可控的。本文將詳細介紹創建重疊的封裝文件的步驟和最佳實踐。 確定需求 在
    的頭像 發表于 01-07 16:51 ?589次閱讀
    主站蜘蛛池模板: jdav视频在线观看| 男啪女视频免费观看网站| freesexvideo性大全| 欧美肥妇性| 69老司机亚洲精品一区| 在线观看视频网站| 中文字幕亚洲区| 精彩视频一区二区三区| 狠狠干狠狠色| 婷婷色爱区综合五月激情韩国| 午夜色网站| 日韩精品网址| 久久两性视频| 4虎最新地址| 国产亚洲人成网站天堂岛| 大尺度在线播放| 五月天婷婷精品视频| 免费在线观看大片影视大全| 国产精品免费看久久久| 天天干精品| 久久精品大全| 欧美一区二区三区男人的天堂| 亚洲综合区图片小说区| 综合婷婷| 日韩精品午夜| 国产性videosgratis| 天天综合网天天综合色| bt天堂网www连接| 天天看片夜夜爽| 2021天天干| 天天看天天操| 欲色淫香| 九九51精品国产免费看| h视频免费| 一级毛片免费毛片一级毛片免费| 日韩免费三级| 成年视频在线观看| 免费看欧美一级特黄α大片| 18videosex欧美69| 婷婷的五月| 久久激情综合网|