Pergunta

Alguém sabe de um código de exemplo que mostra como Delphi 2010 pode ler ficheiros RAW usando a sua nova interface COM para WIC?

Eu quero ler imagens Canon RAW e depois específica acesso pixels ...

Foi útil?

Solução

Este é o uso mais simples:

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;

Há muitos, muitos, muitos tipos diferentes de formatos de arquivo de imagem "brutos", por isso não há como dizer se WIC será capaz de lidar com isso.

Outras dicas

TPicture é muito complicado para trabalhar, quando você acessa a propriedade Gráfico ele não verifica qualquer coisa. Para tornar o trabalho de código de Nick pode forçar a imagem para criar um mapa de bits em primeiro lugar:

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

Seria bom se a classe TPicture era mais bem sucedido em esconder seus detalhes de implementação: -)

A resposta de Nick estava correta depois de tudo! Voltei olhou mais de perto e encontrou a exceção foi ocorrendo no Atribuir declaração ... porque o TImage no meu formulário não tem foto! Atribuir qualquer imagem no Objeto IDE Inspector ou inicializando-lo de uma forma semelhante ao meu código abaixo fez um grande trabalho!

O código abaixo irá converter um arquivo RAW para um arquivo BMP. Eu não tenho trabalhado muito com imagens, por isso não estou absolutamente certo de que o código abaixo está correto, mas parece estar funcionando. O feedback bem-vindos.

Lembrete para outros desenvolvedores: meu comentário anterior acima tem links para uma grande fonte de arquivos e codecs amostra RAW. Estes são inestimáveis.

Obrigado, Nick, E 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;

Depois de ter carregado o Canon RAW Codec, rc170upd_7l.exe, de http://www.usa.canon .com / Cusa / windows_vista / câmeras / eos_slr_camera_systems / canon_raw_codec_software # DriversAndSoftware , Isso exibe uma imagem em Delphi 2010 sobre XP SP3:

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;  
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top