如何在Canon文件上使用Delphi 2010的新WIC功能?

时间:2010-03-09 00:43:31

标签: delphi delphi-2010

有没有人知道一些示例代码,这些代码显示了Delphi 2010如何使用其新的COM接口读取RAW文件到WIC?

我想阅读佳能RAW图像,然后访问特定的像素......

4 个答案:

答案 0 :(得分:3)

这是最简单的用法:

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是否能够处理它。

答案 1 :(得分:1)

使用TPicture非常棘手,当您访问Graphic属性时,它不会检查任何内容。要使Nick的代码工作,您可以强制Picture首先创建位图:

Image1.Picture.Bitmap;
Image1.Picture.Graphic.Assign(WIC);

如果TPicture类在隐藏其实现细节方面更成功,那将是很好的: - )

答案 2 :(得分:0)

尼克的回答毕竟是正确的!我回过头来仔细查看并发现分配语句上发生异常...因为我表单上的TImage没有图片!在IDE Object Inspector中分配任何图片或以类似于我的代码的方式对其进行初始化使其工作得很好!

以下代码会将RAW文件转换为BMP文件。我对图像没有多少工作,所以我不完全确定下面的代码是正确的,但似乎有效。欢迎反馈。

提醒其他开发人员:我之前的评论链接指向RAW文件和编解码器样本的重要来源。这些都是非常宝贵的。

谢谢,尼克,和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;

答案 3 :(得分:0)

加载佳能RAW编解码器后, 来自http://www.usa.canon.com/cusa/windows_vista/cameras/eos_slr_camera_systems/canon_raw_codec_software#DriversAndSoftware的rc170upd_7l.exe, 这将在XP SP3上的Delphi 2010中显示图像:

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;