डेल्फी 200 जेपीईजी, बीएमपी, जीआईएफ और पीएनजी के लिए समर्थन में बनाया गया है।
डेल्फी के पिछले संस्करणों आप PNG और GIF के लिए तीसरे पक्ष के कार्यान्वयन को खोजने के लिए आवश्यकता हो सकती है के लिए
, लेकिन डेल्फी 2009 में तो आप बस अपने उपयोग करता है खंड के Jpeg
, pngimage
और GIFImg
इकाइयों जोड़ें।
यदि फ़ाइल में कोई एक्सटेंशन है, तो आप निम्न कोड का उपयोग कर सकते हैं, जैसा कि अन्य लोगों द्वारा नोट किया गया है TPicture.LoadFromFile विरासत वाले वर्गों द्वारा पंजीकृत एक्सटेंशन को देखता है ताकि यह निर्धारित किया जा सके कि कौन सी छवि लोड हो।
uses
Graphics, Jpeg, pngimage, GIFImg;
procedure TForm1.Button1Click(Sender: TObject);
var
Picture: TPicture;
Bitmap: TBitmap;
begin
Picture := TPicture.Create;
try
Picture.LoadFromFile('C:\imagedata.dat');
Bitmap := TBitmap.Create;
try
Bitmap.Width := Picture.Width;
Bitmap.Height := Picture.Height;
Bitmap.Canvas.Draw(0, 0, Picture.Graphic);
Bitmap.SaveToFile('C:\test.bmp');
finally
Bitmap.Free;
end;
finally
Picture.Free;
end;
end;
यदि फ़ाइल एक्सटेंशन ज्ञात नहीं है तो छवि विधि निर्धारित करने के लिए पहले कुछ बाइट्स को देखना है।
procedure DetectImage(const InputFileName: string; BM: TBitmap);
var
FS: TFileStream;
FirstBytes: AnsiString;
Graphic: TGraphic;
begin
Graphic := nil;
FS := TFileStream.Create(InputFileName, fmOpenRead);
try
SetLength(FirstBytes, 8);
FS.Read(FirstBytes[1], 8);
if Copy(FirstBytes, 1, 2) = 'BM' then
begin
Graphic := TBitmap.Create;
end else
if FirstBytes = #137'PNG'#13#10#26#10 then
begin
Graphic := TPngImage.Create;
end else
if Copy(FirstBytes, 1, 3) = 'GIF' then
begin
Graphic := TGIFImage.Create;
end else
if Copy(FirstBytes, 1, 2) = #$FF#$D8 then
begin
Graphic := TJPEGImage.Create;
end;
if Assigned(Graphic) then
begin
try
FS.Seek(0, soFromBeginning);
Graphic.LoadFromStream(FS);
BM.Assign(Graphic);
except
end;
Graphic.Free;
end;
finally
FS.Free;
end;
end;
स्रोत
2009-06-06 07:36:54
एफवाईआई - बस कोशिश की। यह जेपीजी के लिए काम किया लेकिन पीएनजी के लिए नहीं। –