请问怎么把一个图片中一个一个的像素的值取出来?
我是这么做的
for i:=1 to wBitMap.Height do
begin
for j:=1 to wBitMap.Width do
begin
intPix:= integer(wBitMap.Canvas.Pixels[i,j]);
end;
end;但是显示出来的数值好象不大对啊,这样是遍历整个图片吗?
我是这么做的
for i:=1 to wBitMap.Height do
begin
for j:=1 to wBitMap.Width do
begin
intPix:= integer(wBitMap.Canvas.Pixels[i,j]);
end;
end;但是显示出来的数值好象不大对啊,这样是遍历整个图片吗?
------------------------------------------------------------
The GetRValue macro retrieves an intensity value for the red component of a 32-bit red, green, blue (RGB) value. BYTE GetRValue(
DWORD rgb // 32-bit RGB value
);
每一种图像格式都有自己的存贮的方法
在image中显示的图像和实际的图像之间有个换算比例的问题,建议不要从canvas中取
除非是自己在canvas中画的图像
这个倒没注意过,我只想把每个像素的信息取出来
var
x,y : Integer;
BitMap : TBitMap;
P : PByteArray;
begin
BitMap := TBitMap.create;
try
// On Windows replace MyBitmap.png with a full pathname such as
// C:\Program Files\Common Files\Borland Shared\Images\Splash\256color\factory.bmp
BitMap.LoadFromFile('MyBitmap.png');
for y := 0 to BitMap.Height -1 do
begin
P := BitMap.ScanLine[y]; for x := 0 to BitMap.Width -1 do
P[x] := y;
end;
Canvas.Draw(0,0,BitMap);
finally
BitMap.Free;
end;
end;
而且,具体的实现还与位图的格式有关,24位与8位,是不一样的。
intPix:= Canvas.Pixels[i,j]
来取得图像的一个像素.