资源简介
基于ARM6818开发板的电子钢琴,有完美的界面,按压效果,优美的旋律
代码片段和文件信息
#include “../include/jpg.h“
#include
bool is_jpg(char *file)
{
// 判断file是否存在
assert(file);
// 判断file 是否为.jpg
char *tmp = strstr(file “.jpg“);
if(tmp == NULL){
return false;
}
if(tmp != NULL && strlen(tmp) > strlen(“.jpg“)){
return false;
}
return true;
}
char *img_decoding(char *file struct image_info *img_info )
{
// 获取图片文件信息存在file_info 里面
struct stat file_info;
bzero(&file_info sizeof(file_info));
stat(file &file_info);
// 申请一块图片大小的内存 存放图片数据并清零
char *jpg_buf = calloc(1file_info.st_size);
if(jpg_buf == NULL)
{
printf(“calloc error [line:%d] %s \n“ __LINE__strerror(errno));
exit(0);
}
// 将图片数据 全部读入 jpg_buf 里
FILE *fp = fopen(file“r“);
if(fp == NULL)
{
printf(“fopen error [line:%d] %s \n“ __LINE__strerror(errno));
exit(0);
}
while(1)
{
if(fread(jpg_buffile_info.st_size5fp) < 5)
{
if(feof(fp))
{
break;
}
if(ferror(fp))
{
printf(“fread error [line:%d] %s \n“ __LINE__strerror(errno));
break;
}
}
fread(jpg_buffile_info.st_size5fp);
}
// 声明解压缩结构体,以及错误管理结构体
struct jpeg_decompress_struct cinfo;
struct jpeg_error_mgr jerr;
// 使用缺省的出错处理来初始化解压缩结构体
cinfo.err = jpeg_std_error(&jerr);
jpeg_create_decompress(&cinfo);
// 配置该cinfo,使其从jpgdata中读取jpg_size个字节
// 这些数据必须是完整的JPEG数据
jpeg_mem_src(&cinfo jpg_buf 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(0);
}
// 开始解压
jpeg_start_decompress(&cinfo);
img_info->width = cinfo.output_width;
img_info->height = cinfo.output_height;
img_info->pixel_size = cinfo.output_components;
int row_stride = img_info->width * img_info->pixel_size;
// 根据图片的尺寸大小,分配一块相应的内存rgb_buffer
// 用来存放从jpgdata解压出来的图像数据
unsigned long rgb_size;
unsigned char *rgb_buffer;
rgb_size = img_info->width * img_info->height * img_info->pixel_size;
rgb_buffer = (unsigned char *)calloc(1 rgb_size);
// 循环地将图片的每一行读出并解压到rgb_buffer中
int line = 0;
while(cinfo.output_scanline < cinfo.output_height)
{
unsigned char *buffer_array[1];
buffer_array[0] = rgb_buffer + (cinfo.output_scanline) * row_stride;
jpeg_read_scanlines(&cinfo buffer_array 1);
}
// 解压完了,将jpeg相关的资源释放掉
jpeg_finish_decompress(&cinfo);
jpeg_destroy_decompress(&cinfo);
free(jpg_buf);
fclose(fp);
return rgb_buffer;
}
// 将图片显示到显存的指定位置上。
void display(char *file
char *fbmem
struct fb_var_screeninfo *lcd_info // lcd 信息
int x_offset // x 方向偏移量
int y_offset) // y 方向偏移量
{
//bzero(fbmem lcd_info->xres * lcd_info->yres * lcd_info-> bits_per_pixel/8);
struct image_info *img_info = calloc(1sizeof(struct image_info));
char *rgb_buf = img_decoding(fileimg_info);
char *tmp = rgb_buf;
/*if(x_offset == 0 && y_offset == 0 && img_info
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1152056 2018-05-11 00:08 2project\bmp\background.bmp
文件 112856 2018-05-11 00:08 2project\bmp\bar.bmp
文件 18964 2018-06-16 19:52 2project\bmp\BMPfileFormat.png
文件 54936 2018-05-11 00:08 2project\bmp\key_off.bmp
文件 54936 2018-05-11 00:08 2project\bmp\key_on.bmp
文件 67902 2018-12-27 13:01 2project\bmp\logo.bmp
文件 4496 2018-12-27 15:08 2project\include\jpg.c
文件 966 2018-12-09 17:35 2project\include\jpg.h
文件 13366 2018-12-27 11:28 2project\jpg\background.jpg
文件 5222 2018-12-27 11:29 2project\jpg\bar.jpg
文件 2634 2018-12-27 11:29 2project\jpg\key_off.jpg
文件 2614 2018-12-27 11:29 2project\jpg\key_on.jpg
文件 8174 2018-12-27 11:30 2project\jpg\logo.jpg
文件 21316 2018-05-11 00:08 2project\mp3\d1.mp3
文件 19644 2018-05-11 00:08 2project\mp3\d10.mp3
文件 19226 2018-05-11 00:08 2project\mp3\d11.mp3
文件 18808 2018-05-11 00:08 2project\mp3\d12.mp3
文件 20898 2018-05-11 00:08 2project\mp3\d2.mp3
文件 20898 2018-05-11 00:08 2project\mp3\d3.mp3
文件 20898 2018-05-11 00:08 2project\mp3\d4.mp3
文件 20898 2018-05-11 00:08 2project\mp3\d5.mp3
文件 20898 2018-05-11 00:08 2project\mp3\d6.mp3
文件 21316 2018-05-11 00:08 2project\mp3\d7.mp3
文件 20062 2018-05-11 00:08 2project\mp3\d8.mp3
文件 20062 2018-05-11 00:08 2project\mp3\d9.mp3
文件 998772 2018-12-27 20:22 2project\mp3\eeeee.bmp
文件 12495 2018-12-28 17:02 2project\src\show_jpeg
文件 7186 2018-12-28 17:02 2project\src\show_jpeg.c
目录 0 2018-12-27 11:30 2project\bmp
目录 0 2018-12-27 15:08 2project\include
............此处省略7个文件信息
相关资源
- 7-band EQ均衡器算法
- 3.5mm耳机和音频输入PCB封装AD
- 论文研究-基于ARM的嵌入式网络视频监
- 嵌入式系统/ARM技术中的基于ARM的新型
- RN7213是ARM Cortex-M0内核的电表SOC芯片带
- 微信小程序,图片拍照,音频视频录
- RN7213是ARM Cortex-M0内核的电表SOC芯片带
- 基于ARM处理器的CAN-Ethernet通信模块实
- Keil_ARM_MDK 5.15 支持5.1以上MDK专业版的
- 嵌入式LINUX基础教程中文第2版 --百度
- IAR Generic Keygen
- ARM开发板LPC2132电路PCB图与SCH原理图
- 基于Ucos的多任务实现
- 音频文件加密,解密
- arm开发流程、最小系统、启动文件详
-
VNC viewer for em
bedded WIN CE system (在嵌 - GPS数据接收与提取流程图
- s3c2440下LED灯驱动的源代码
- 现代信号处理练习-古典功率谱、现代
- 数字计算器的基本按键音频 含年月日
- ADS1259源程序
- 使用Wave系列API开发录音机和播放器
- pycharm各种主题包括仿sublime的monokai主
- WAV音频的LSB信息隐藏
- Mac版FFmpeg视频音频批量处理脚本的副
- SM_ARMV4I_V2.1.zip
- ARM Mini2440 电路图.
- IAR for ARM 5.3破解文件
- amr音频文件
- exfat_new-ARM平台驱动源码包
评论
共有 条评论