好说;
如果是24位的,load进Bmp(TBitmap)后,可以用scanline属性读出!
如果不是24位,只要没有特殊要求,用bmp.pixelformat = pf24bit转换;
当然了,最简单的是用bmp.canvas.pixels[i,j]直接读出;只不过较慢!
最好的是直接读文件了,读出头之后(54bytes) 根据该头分情况写入数组之中去!
如果是24位的,load进Bmp(TBitmap)后,可以用scanline属性读出!
如果不是24位,只要没有特殊要求,用bmp.pixelformat = pf24bit转换;
当然了,最简单的是用bmp.canvas.pixels[i,j]直接读出;只不过较慢!
最好的是直接读文件了,读出头之后(54bytes) 根据该头分情况写入数组之中去!
能再详细一点吗?
先试试最简单的方法!
也就是比如:
image1.canvas.pixels[0,0] = $000000ff
则在image1上的(0,0)这点的颜色就是红的!
用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);