如何使用德尔福2010年的新的WIC功能上佳能的文件?
-
18-09-2019 - |
题
有谁知道的一些示例代码,演示如何德尔福2010可以使用其新的COM接口WIC读取RAW文件?
我想读佳能RAW图像,然后访问特定像素...
解决方案
这是最简单的用法:
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;
有许多,许多,许多不同类型的“原始”的图像文件格式,所以没有说服力,如果WIC将能够处理它。
其他提示
TPicture是非常棘手的工作,当你访问图形属性它不检查任何东西。为了让尼克的代码工作,你可以强制图片首先创建一个位图:
Image1.Picture.Bitmap;
Image1.Picture.Graphic.Assign(WIC);
这将是很好,如果TPicture类是隐藏实现细节更成功的: - )
尼克的回答是毕竟正确的!我回去看了更加紧密,发现异常是发生在分配的声明......因为我的窗体上的TImage没有图片!在IDE Object Inspector中指定的任何图片或类似下面我的代码的方式初始化它使人们的工作太棒了!
下面的代码将一个RAW文件转换为BMP文件。我没有太多的工作与图片,所以我不能绝对肯定,下面的代码是正确的,但它似乎是工作。反馈欢迎。
提醒给其他开发者:以上我先前的评论有链接的样品RAW文件和编解码器的重要来源。这些是非常宝贵的。
谢谢,尼克,AND Embarcadero的!!!
procedure TForm1.Button1Click(Sender: TObject);
var
WIC: TWICImage;
BMP: TBitMap;
begin
WIC := TWICImage.Create;
BMP := TBitMap.Create;
try
WIC.LoadFromFile('MyFileName.Raw');
BMP.Assign(WIC);
BMP.SaveToFile('MyFilename.bmp');
finally
WIC.Free;
BMP.Free;
end;
end;
已经加载的佳能RAW编解码器, rc170upd_7l.exe,从 http://www.usa.canon .COM / CUSA / windows_vista /摄像机/ eos_slr_camera_systems / canon_raw_codec_software#DriversAndSoftware , 这显示在XP SP3在2010年的Delphi图像:
var
WIC: TWICImage;
begin
WIC := TWICImage.Create;
try
WIC.LoadFromFile('IMG_0201.CR2'); // WIC.ImageFormat reports wifOther
Img1.Picture.Assign(WIC);
finally
WIC.Free;
end;
end;
不隶属于 StackOverflow