Como usar o novo recurso WIC Delphi 2010 é em arquivos Canon?
-
18-09-2019 - |
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 ...
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;