TFT是嵌入式可视化输出的重要原件UTFT库封装了 画圆,画方,画线等函数
大家是否发现用实例里面的方法显示图片会使内存紧张,没有灵活性
在研究了BMP结构体之后我做出了显示24、32位深bmp的方法
不懂结构体的可以百度自行搜查,直接上干货!
看过我上两篇帖子,有程序基础的朋友可以直接复制以下内容初始化一下tft sd。
- void BMP_READ(const char *BMP_NAME,int BMP_SET_X,int BMP_SET_Y){
- //图片名称(深层文件夹用/分级,具体见SD库),图片位置x,图片位置y
- File myFile;
- int x=-1,x_1,y=0;
- int bmp[54];
- int size_x;
- int size_y;
- int bmp_bit;
- byte bmp_bit_r;
- byte bmp_bit_g;
- byte bmp_bit_b;
- byte bmp_bit_empty;
- myFile = SD.open(BMP_NAME);//100*75
- if(myFile){
- for (int i=0;i<54;i++){
- bmp[i]=myFile.read();
- }
- size_x=bmp[18];
- size_y=bmp[22];
- bmp_bit=bmp[28];
- y=size_y;
- if (bmp_bit==24||32){
- x_1=x+1;
- //Serial.println (myFile.available());//文件总字节数
- //Serial.println(size_x);//图片大小 长
- //Serial.println(size_y);//图片大小 宽
- //Serial.println(bmp_bit);//图片格式 位此处只识别为24 32位
- for (int a=0 ;a < size_x*size_y;a++){
- x=x+1;
- if(x==size_x){
- x=x_1;
- y=y-1;
- }
- bmp_bit_r = myFile.read();
- bmp_bit_g = myFile.read();
- bmp_bit_b = myFile.read();
- if(bmp_bit==32){
- bmp_bit_empty=myFile.read();
- }
- myGLCD.setColor( bmp_bit_b, bmp_bit_g ,bmp_bit_r); //BGR
- myGLCD.drawPixel(x+BMP_SET_X,y+BMP_SET_Y); //自左向右,自下到上,画像素
- }
- myFile.close();
- return 1;
- }else{
- myGLCD.print("err",BMP_SET_X,BMP_SET_Y);
- Serial.print("err");
- return 0;
- }
- }else{
- Serial.print("err");
- return 0;
- }
- }
复制代码 以下包括完整工程文件,所用到的库,实例图片
SD_BMP.zip
(5.31 MB, 下载次数: 15)
|