Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: Đọc file BMP có vấn đề...

  1. #1
    Ngày gia nhập
    12 2011
    Nơi ở
    TP HCM
    Bài viết
    3

    Mặc định Đọc file BMP có vấn đề...

    Chào mọi người..!
    Mình có đọc 1 file BMP và kiểm tra xem nó có phải là file BMP hay không và gặp vấn đề như trong ảnh!.Tại sao lại có thêm các kí tự lạ đằng sau BM??.
    Mình khai báo "unsigned char name[2]" trong struct bmHeader và đọc file header:
    Với ddn[] đây là đường dẫn nguồn ảnh.
    C Code:
    1. void docFbng (bmHeader &h, bmDib &d, char ddn[])
    2. {
    3.     FILE *fr;
    4.     fr = fopen (ddn,"rb");
    5.     if (fr==NULL)
    6.         return;
    7.     fread (&h,sizeof (bmHeader),1,fr);
    8.     fread (&d,sizeof (bmDib),1,fr);
    9.     fclose (fr);
    10. }
    Đây là hàm kiểm tra: (Mình truyền h.name vào hàm)
    C Code:
    1. bool testFile (unsigned char name[])
    2. {
    3.     if (name[0]=='B' && name[1]=='M')
    4.         return 1;
    5.     return 0;
    6. }
    Cấu trúc các struct:
    C Code:
    1. struct bmHeader
    2. {
    3.   unsigned char name[2];
    4.   uint32_t filesz;
    5.   uint16_t reserved1;
    6.   uint16_t reserved2;
    7.   uint32_t offset;
    8. };
    9.  
    10. struct bmDib
    11. {
    12.   uint32_t hSize;
    13.   int32_t width;
    14.   int32_t height;
    15.   uint16_t planes;
    16.   uint16_t bitsPerPixel;
    17.   uint32_t compresssion;
    18.   uint32_t imageSize;
    19.   int32_t hres;
    20.   int32_t vres;
    21.   uint32_t ncolors;
    22.   uint32_t nimpcolors;
    23. };
    Đã được chỉnh sửa lần cuối bởi cauberong09 : 11-03-2012 lúc 04:00 PM.
    Mình rất muốn cùng nhau trao đổi học hỏi với các tất cả các bạn dù bạn mới nhập môn hay đã thành "sư phụ".....(mình nhập môn thôi=)))
    Cùng học tập nhé....nick:cauberong_09.

  2. #2
    Ngày gia nhập
    05 2011
    Bài viết
    299

    tên file bạn test là gì???
    unsign char name[2] đã chứa đủ cái name đó chưa?
    Programming tutorials and source code examples

    Trong nhà không vợ không con
    Uống bia gặm thịt sao ngon thế này
    Nhậu nhẹt không bị la rầy
    Một tuần ta cứ bảy ngày " nâng ly "....

  3. #3
    Ngày gia nhập
    12 2011
    Nơi ở
    TP HCM
    Bài viết
    3

    Trích dẫn Nguyên bản được gửi bởi rossoneri Xem bài viết
    tên file bạn test là gì???
    unsign char name[2] đã chứa đủ cái name đó chưa?
    Tên file mình kiểm tra chính nằm trong đường dẫn là ddn[] đó bạn, còn unsign char name[2] là 2 byte, vậy đủ chứa 2 kí tự B và M chứ nhỉ?!.Mình vẫn không biết sai ở đâu mong bạn giúp đỡ.
    Đã được chỉnh sửa lần cuối bởi cauberong09 : 11-03-2012 lúc 04:02 PM.
    Mình rất muốn cùng nhau trao đổi học hỏi với các tất cả các bạn dù bạn mới nhập môn hay đã thành "sư phụ".....(mình nhập môn thôi=)))
    Cùng học tập nhé....nick:cauberong_09.

  4. #4
    Ngày gia nhập
    11 2011
    Bài viết
    0

    Theo mình được biết khi lưu unsigned char[2] thì máy lưu thêm 2 byte nữa, gọi là alignment...do đó kí tự dư ra là do hai byte alignment đó.
    Để khắc phục thì trong diễn đàn đã nói rõ rồi, mình xin nói lại thôi :

    #pragma pack(push,1)
    struct bmHeader
    {
    unsigned char name[2];
    uint32_t filesz;
    uint16_t reserved1;
    uint16_t reserved2;
    uint32_t offset;
    };

    struct bmDib
    {
    uint32_t hSize;
    int32_t width;
    int32_t height;
    uint16_t planes;
    uint16_t bitsPerPixel;
    uint32_t compresssion;
    uint32_t imageSize;
    int32_t hres;
    int32_t vres;
    uint32_t ncolors;
    uint32_t nimpcolors;
    };
    #pragma pack(pop)

Các đề tài tương tự

  1. Cách add file thư viện dll vào file exe để tạo một file chạy duy nhất C#
    Gửi bởi nthung2112 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 20
    Bài viết cuối: 01-09-2012, 10:01 AM
  2. File backup .bak có dung lương lớn hơn file .mdb và file log
    Gửi bởi MYNAM trong diễn đàn Thắc mắc Microsoft SQL Server & Microsoft Access
    Trả lời: 4
    Bài viết cuối: 27-07-2012, 12:59 PM
  3. Giới thiệu cách chuyển File Ảnh thành file Video trong download proshow gold
    Gửi bởi thuhu0900x trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 3
    Bài viết cuối: 03-07-2012, 03:54 AM
  4. Đọc dữ liệu file midi dạng số HEX và lấy lời nhạc trong file ra file text
    Gửi bởi kimngockhtn_2007 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 29-06-2011, 04:40 PM
  5. Trả lời: 17
    Bài viết cuối: 23-05-2011, 11:47 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn