91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 11KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2021-06-24
  • 語言: 其他
  • 標簽: 電子相冊??ARM??

資源簡介

基于GEC210 上實現電子相冊的圖片閱覽功能 , 用雙循環鏈表實現, 其他功能可以自行添加,包括遍歷文件夾目錄查找等等

資源截圖

代碼片段和文件信息

#include?“mytype.h“

//?將jpeg文件的壓縮圖像數據讀出,放到jpg_buffer中去等待解壓
unsigned?long?read_image_from_file(int?fd
???unsigned?char?*jpg_buffer
???unsigned?long?jpg_size)
{
unsigned?long?nread?=?0;
unsigned?long?total?=?0;

while(jpg_size?>?0)
{
nread?=?read(fd?jpg_buffer?jpg_size);

jpg_size?-=?nread;
jpg_buffer?+=?nread;
total?+=?nread;
}
close(fd);

return?total;
}

int?Stat(const?char?*filename?struct?stat?*file_info)
{
int?ret?=?stat(filename?file_info);

if(ret?==?-1)
{
fprintf(stderr?“[%d]:?stat?failed:?“
“%s\n“?__LINE__?strerror(errno));
exit(1);
}

return?ret;
}

int?Open(const?char?*filename?int?mode)
{
int?fd?=?open(filename?mode);
if(fd?==?-1)
{
fprintf(stderr?“[%d]:?open?failed:?“
“%s\n“?__LINE__?strerror(errno));
exit(1);
}

return?fd;
}

int?decode_jpg(char*?filename)
{
node_t?*picture?=?(node_t*)malloc(sizeof(node_t));

//?讀取圖片文件屬性信息
//?并根據其大小分配內存緩沖區jpg_buffer
struct?stat?file_info;
Stat(filename?&file_info);
int?fd?=?Open(filename?O_RDONLY);

unsigned?char?*jpg_buffer;
jpg_buffer?=?(unsigned?char?*)calloc(1?file_info.st_size);
read_image_from_file(fd?jpg_buffer?file_info.st_size);


/***********?以下代碼都是固定的套路?****************/


//?聲明解壓縮結構體,以及錯誤管理結構體
struct?jpeg_decompress_struct?cinfo;
struct?jpeg_error_mgr?jerr;

//?使用缺省的出錯處理來初始化解壓縮結構體
cinfo.err?=?jpeg_std_error(&jerr);
jpeg_create_decompress(&cinfo);

//?配置該cinfo,使其從jpg_buffer中讀取jpg_size個字節
//?這些數據必須是完整的JPEG數據
jpeg_mem_src(&cinfo?jpg_buffer?file_info.st_size);


//?讀取JPEG文件的頭,并判斷其格式是否合法
int?ret?=?jpeg_read_header(&cinfo?true);
if(ret?!=?1)
{
fprintf(stderr?“[%d]:?jpeg_read_header?failed:?“
“%s\n“?__LINE__?strerror(errno));
exit(1);
}

//?開始解碼
jpeg_start_decompress(&cinfo);

//?妥善保管圖片的尺寸信息
picture->image_info.width?=?cinfo.output_width;
picture->image_info.height?=?cinfo.output_height;
picture->image_info.pixel_size?=?cinfo.output_components;

//?計算一行的字節數
int?row_stride?=?picture->image_info.width?*
picture->image_info.pixel_size;

//?根據圖片的尺寸大小,分配一塊相應的內存rgb_buffer
//?用來存放從jpg_buffer解壓出來的圖像數據
unsigned?long?rgb_size;
rgb_size?=?picture->image_info.width?*
picture->image_info.height?*?
picture->image_info.pixel_size;
picture->rgb_buf?=?(unsigned?char?*)calloc(1?rgb_size);

//?循環地將圖片的每一行讀出并解碼到rgb_buffer中
int?line?=?0;
while(cinfo.output_scanline? {
unsigned?char?*buffer_array[1];
buffer_array[0]?=?picture->rgb_buf?+
(cinfo.output_scanline)?*?row_stride;
jpeg_read_scanlines(&cinfo?buffer_array?1);
}

//?解壓完了,將jpeg相關的資源釋放掉
? jpeg_finish_decompress(&cinfo);
jpeg_destroy_decompress(&cinfo);
free(jpg_buffer);

//?現在我們得到了兩個必要的東西:
//?圖片的尺寸信息:?picture->image_info
//?圖片的RGB數據:??picture->rgb_buf


/**************?以上代碼都是固定的套路?*********************/

add_link(picture);

return?0;
}



?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件??????15114??2018-05-10?14:03??電子相冊\a.out

?????文件???????3365??2018-05-10?12:31??電子相冊\decode.c

?????文件???????1158??2018-05-10?14:06??電子相冊\display.c

?????文件???????1722??2018-05-09?22:48??電子相冊\find.c

?????文件????????461??2018-05-10?11:37??電子相冊\link.c

?????文件???????1061??2018-05-10?13:50??電子相冊\main.c

?????文件???????1820??2018-05-10?14:01??電子相冊\mapped.c

?????文件???????1016??2018-05-10?13:55??電子相冊\mytype.h

?????目錄??????????0??2018-05-12?14:10??電子相冊

-----------?---------??----------?-----??----

????????????????25717????????????????????9


評論

共有 條評論