下面的代码(来自这个线程:How to use Delphi 2010's new WIC capability on Canon files?)在BitMap中打开一个WIC图像。
但是,如果WIC像素值的动态范围很大,则此代码会丢失大量信息,因为它必须将宽动态范围缩放到位图像素可以容纳的低范围内。
procedure TForm116.Button1Click(Sender: TObject);
var
WIC: TWICImage;
begin
WIC := TWICImage.Create;
try
WIC.LoadFromFile('MyFilename.raw');
Image1.Picture.Graphic.Assign(WIC);
finally
WIC.Free;
end;
end;谁能给我看一下示例代码,让我直接从TWICImage读取像素值,这样我就可以在不丢失信息的情况下访问图像数据?我需要每个像素的强度(灰度)值,如果没有直接可用的,也许可以从RGB值计算出来?
类似于:
var
PixelValue: Integer; // Grayscale
for Row := 0 to WIC.Width do
for Col := 0 to WIC.Height
PixelValue := WIC.GetPixelValue(Row, Col);发布于 2010-08-24 02:10:42
您应该能够将TWICImage转换为TBitmap,然后访问位图的Pixels或ScanLine属性来获取像素数据。就像你加载JPEG时做的那样。
例如(未经测试的伪代码)
w := TWICImage.Create();
w.LoadFromFile(...)
b := TBitmap.Create;
b.assign( w);
ptr := b.ScanLine[...]https://stackoverflow.com/questions/3544377
复制相似问题