学习图像处理,第一步就卡了。
谁能给一个不用Timage类读取
bmp图像的例子.或者有相关方法的提示也可。

解决方案 »

  1.   

    ??
    你问什么啊?
    好象是这样
    image1.picure:=Timage.loadfromfile("");
    反正是有一个方法的
    不记得对不对了以L开头的方法
      

  2.   

    bmp图像一般不加压缩,你完全可以打开二进制图像文件,从其中一个一个像素地来读.
    当然,要了解一下文件的结构,包括文件的结构信息和图像的结构信息.
      

  3.   

    可以看看下面的贴:http://topic.csdn.net/t/20041105/14/3525171.html其中有用delphi(和C)读取bmp文件数据的代码.
      

  4.   

    to Kvci & sdzeng:
        都说了不用Tbitmap的.....to zzwu:
        我知道这些,要不也不会用bmp结构来练习了。但是在具体应用中就出现问题了。
        问题如下:
        1 硬盘上数据和内存中怎么对应的?是不是内存中也存在一个'BM'标志
        2 我要获取图像上(0,1)点的像素的rgb,应该在硬盘上读取那一个位置的值?从第55个开始?还是从那里开始?有什么办法分析一下?谢谢各位,我刚开始涉及此方面,请回答稍微仔细点。
      

  5.   

    呵呵,不是我不明白,是你没说清楚建议你看一下TBitmap的源代码和这篇文章
    http://www.qcxy.hb.cn/skagon/blog/index.asp?id=106读取BMP文件的顺序是:
    用stream从硬盘读取文件到内存,从内存里读取字节,整理成GDI需要的结构,由GDI函数,CreatePalette创建调色板,用CreateDIBitmap创建位图对象。
    根据图像数据计算出像素值,再“画”到屏幕设备上的过程,是由GDI完成的,基本上不用我们操心。如果想知道屏幕上的像素具体对应到文件中哪几个字节,需要了解BMP文件的结构,
    建议你有空看看这篇文章
    http://www.youthbar.com/more.asp?name=stoneedu&id=312
      

  6.   


    1 硬盘上数据和内存中怎么对应的?是不是内存中也存在一个'BM'标志 [答]在内存中没有必要保存"BM"标致.2.图像上(0,1)点的像素的rgb,应该在硬盘上读取那一个位置的值?从第55个开始? [答]第55个开始存放图像数据,但如果图像是4位或位的index模式,则还得存放调色版数据.
         另外, bmp图像数据是倒放的,也就是说,第一个读出的点,是图像最下面
         一行的第一个像素,而不是顶上面一行的像素数据.
      

  7.   

    上面漏了一个'8'字:1 硬盘上数据和内存中怎么对应的?是不是内存中也存在一个'BM'标志 [答]在内存中没有必要保存"BM"标致.2.图像上(0,1)点的像素的rgb,应该在硬盘上读取那一个位置的值?从第55个开始? [答]第55个开始存放图像数据,但如果图像是4位或8位的index模式,则还得存放调色版数据.
         另外, bmp图像数据是倒放的,也就是说,第一个读出的点,是图像最下面
         一行的第一个像素,而不是顶上面一行的像素数据.
      

  8.   

    还是不行啊,自己写的函数读出来的图像一团糟。
    to zzwu:
        如果bmp是没有调色板,都是4byte/像素的吗?
        那么这个时候(0,1)像素应该在什么地方?