查看: 2757|回复: 7

离我的图片浏览器不远了

[复制链接]
  • TA的每日心情
    奋斗
    2018-8-29 20:40
  • 签到天数: 1341 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2013-6-18 01:03:55 | 显示全部楼层 |阅读模式
    分享到:
    将SD卡中的8位灰度图片读取出来 并显示

    部分代码
    1. #include "wwBMP.h"
    2. #include "inc/hw_types.h"
    3. #include "inc/lm3s9b96.h"
    4. #include "inc/hw_sysctl.h"
    5. #include "inc/hw_memmap.h"


    6. //
    7. // 2 - 非bmp文件
    8. // 4 - 信息头错误
    9. // 5 - 不是灰度图像格式!
    10. // 6 - 使用了调色板 暂不支持
    11. // 8 - 文件太大
    12. short readBMP(void)
    13. {
    14.         // 利用SD卡读取文件 ,
    15.         // 第一步默认文件名为 "testbmp"
    16.         // 先直接进入根目录
    17.         int nStatus;
    18.         FRESULT fresult;
    19.     char cTmpBuf[PATH_BUF_SIZE] = "/testbmp.bmp";
    20.     unsigned short usBytesRead;
    21.     BITMAPFILEHEADER bmpfileheader;
    22.     BITMAPINFOHEADER bmpinfoheader;
    23.     DWORD fileSize = 0; // 整个全部文件的大小
    24.     DWORD bfOffBits = 0; // 到数据区的偏移量
    25.     DWORD ImageSize = 0; // 位图数据的大小
    26.         DWORD temp2 = 0;
    27.         short temp1 =0;
    28.     int i=0;
    29.     int j=0;
    30.     BYTE RGBQUAD[4];      
    31.    
    32.     fresult = f_mount(0, &g_sFatFs);
    33.     if(fresult != FR_OK)
    34.     {
    35.         return fresult;
    36.     }
    37.         // 现在已经进入了根目录了
    38.     // 打开文件.
    39.     fresult = f_open(&g_sFileObject, cTmpBuf, FA_READ);
    40.     if(fresult != FR_OK)
    41.         return(fresult);
    42.     // 读取文件头
    43.     // fresult = f_read(&g_sFileObject, &bmpfileheader, sizeof(bmpfileheader),&usBytesRead);
    44.     fresult = f_read(&g_sFileObject, &bmpfileheader, 14,&usBytesRead);
    45.     if(fresult != FR_OK)
    46.         return(fresult);
    47.     // 判断文件信息
    48.     if (bmpfileheader.bfType != 0x4d42)
    49.         {
    50.                 return 2;
    51.         }
    52.     fileSize = bmpfileheader.bfSize;
    53.     bfOffBits = bmpfileheader.bfOffBits;
    54.     // 读取信息头
    55.     fresult = f_read(&g_sFileObject, &bmpinfoheader, 40, &usBytesRead);
    56.     if(fresult != FR_OK)
    57.         return(fresult);
    58.     if(usBytesRead != 40)
    59.         return 4;
    60.     // 获取调色板 文件大小 文件长度 行列
    61.     if(bmpinfoheader.biBitCount != 8)
    62.                 return 5;
    63.     if((bmpinfoheader.biClrUsed !=0) && (bmpinfoheader.biClrUsed !=256))
    64.     {
    65.                 return 6;
    66.         }
    67.    
    68.     ImageSize = bmpinfoheader.biSizeImage;
    69.     g_bmpWidth = bmpinfoheader.biWidth;
    70.     g_bmpHeight = bmpinfoheader.biHeight;
    71.     g_bytePerLine = BytePerline(g_bmpWidth * 8);
    72.    
    73.     // 填充 g_wwImage 数据
    74.     g_wwImage[1] = g_bmpWidth;
    75.     g_wwImage[3] = g_bmpHeight;
    76.     // 跳过调色板 直接读取实际数据 并显示出来
    77.     for(i=0; i<256; i++)
    78.         fresult = f_read(&g_sFileObject, RGBQUAD, 4, &usBytesRead);
    79.     // 读取实际数据 并按一行一行的显示
    80.     if(g_bmpWidth >240 || g_bmpHeight>240)
    81.         return 8;
    82.         // 注意是bmp文件时倒序的
    83.     for(i=0; i<g_bmpHeight; i++)
    84.     {
    85.         fresult = f_read(&g_sFileObject, g_bmpLineData, g_bytePerLine, &usBytesRead);
    86.         // 填充 g_wwImage 数据
    87.         for(j=0; j<g_bytePerLine; j++)
    88.         {
    89.                         g_wwImage[774 + (g_bmpHeight-i)*g_bytePerLine + j] = g_bmpLineData[j];
    90.                 }
    91.     }
    92.     // 关键是怎么显示出来
    93.     // 考虑利用 GrImageDraw 函数
    94.     f_close(&g_sFileObject);
    95.     return(0);
    96. }
    复制代码
    运行结果
    IMG_6563.JPG
    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    2016-5-9 12:20
  • 签到天数: 350 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2013-6-18 01:09:22 | 显示全部楼层
    楼主女朋友好漂亮。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2014-7-16 09:10
  • 签到天数: 361 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2013-6-18 08:06:43 | 显示全部楼层
    {:soso_e179:}八卦下   你女友啊?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2020-9-28 10:10
  • 签到天数: 1018 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2013-6-18 08:17:34 | 显示全部楼层
    楼主强悍!!!妹纸很漂亮~~~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2018-8-29 20:40
  • 签到天数: 1341 天

    连续签到: 1 天

    [LV.10]以坛为家III

     楼主| 发表于 2013-6-18 08:30:15 | 显示全部楼层
    GY@艳 发表于 2013-6-18 08:06
    八卦下   你女友啊?

    嘿嘿嘿嘿
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2014-7-16 09:10
  • 签到天数: 361 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2013-6-18 08:31:59 | 显示全部楼层
    wangku001wei 发表于 2013-6-18 08:30
    嘿嘿嘿嘿

    好漂亮的说。看样子你们都好年轻呀
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2013-7-5 09:56
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2013-6-18 08:59:40 | 显示全部楼层
    显示屏上的妹子把楼主的风头抢了 {:soso_e120:}
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-4-2 16:02
  • 签到天数: 257 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2013-6-18 15:59:34 | 显示全部楼层
    表示是来看漂亮妹子的
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条



    手机版|小黑屋|与非网

    GMT+8, 2025-1-11 10:18 , Processed in 0.168594 second(s), 31 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.