Wie Delphi 2010 die neue WIC-Fähigkeit auf Canon-Dateien verwenden?
-
18-09-2019 - |
Frage
Kennt jemand einigen Beispielcode, der zeigt, wie Delphi 2010 RAW-Dateien mit seinem neuen COM-Schnittstelle WIC lesen kann?
Ich möchte Canon RAW-Bilder lesen und dann Zugriff auf bestimmte Pixel ...
Lösung
Dies ist die einfachste Nutzung:
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;
Es gibt viele, viele, viele verschiedene Arten von „rohen“ Bilddateiformaten, so es ist nicht abzusehen, ob WIC wird in der Lage sein, es zu handhaben.
Andere Tipps
TPicture- ist sehr schwierig, mit zu arbeiten, wenn Sie die Grafik-Eigenschaft zugreifen er nichts überprüfen. Um Nicks Code Arbeit zu machen können Sie das Bild zwingen, eine Bitmap zu erstellen zuerst:
Image1.Picture.Bitmap;
Image1.Picture.Graphic.Assign(WIC);
Es wäre schön, wenn die TPicture- Klasse mehr erfolgreich ist seine Implementierungsdetails versteckt: -)
Nick Antwort richtig war, nachdem alle! Ich ging sah mehr zurück eng und fand die Ausnahme auftritt auf die Weisen Aussage ... weil die TImage auf meiner Form kein Bild hat! Sie auf ein Bild in der IDE Objektinspektor zuweisen oder sie in ähnlicher Weise, wie mein Code unten machte es Arbeit toll!
InitialisierungDer folgende Code wird eine RAW-Datei in eine BMP-Datei konvertieren. Ich habe nicht viel mit Bildern gearbeitet, also bin ich nicht ganz sicher, dass der folgende Code korrekt ist, aber es scheint zu funktionieren. Feedback willkommen.
Zur Erinnerung an anderen Entwicklern: mein früherer Kommentar oben hat Links zu einer großen Quelle der Probe RAW-Dateien und Codecs. Diese sind von unschätzbarem Wert.
Danke, Nick, und 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;
Nachdem die Canon RAW Codec geladen, rc170upd_7l.exe, von http://www.usa.canon .com / cusa / windows_vista / Kameras / eos_slr_camera_systems / canon_raw_codec_software # DriversAndSoftware , Dies zeigt ein Bild in Delphi 2010 auf 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;