好说;
如果是24位的,load进Bmp(TBitmap)后,可以用scanline属性读出!
如果不是24位,只要没有特殊要求,用bmp.pixelformat = pf24bit转换;
当然了,最简单的是用bmp.canvas.pixels[i,j]直接读出;只不过较慢!
最好的是直接读文件了,读出头之后(54bytes) 根据该头分情况写入数组之中去!

解决方案 »

  1.   

    谢谢: pathe(睡斛) 
    能再详细一点吗?
      

  2.   

    关键是你要做什么呢?
    先试试最简单的方法!
    也就是比如:
     image1.canvas.pixels[0,0] = $000000ff
    则在image1上的(0,0)这点的颜色就是红的!
     
      

  3.   

    用ScanLine得到的是不是就是图象象素点的灰度值,而Bitmap.Height, Bitmap.Width是不是就是图象每列和每行的象素点的数目。
      

  4.   

    意,你们老师没讲过吗?
    用scanline或canvas.pixels[i,j]得出来的是颜色直,
    具体来说是r,g,b通到(分量)上灰度直的组合直(指24bit);
    如果想得到灰度直可将三个灰度直求平均,或加权平均,一般用 gray = round(0.5*r+0.3*g+0.2b)(大概的,你最好查查相关书籍);
    但是如果你要做变换的话,可以在三个分量上分别来做;
    color := image1.canvas.pixels[i,j];
      r := Byte(color);
      g := byte(color shr 8);
      b := byte(color shr 16);