मैं टीजीआईएफआईमेज का उपयोग कर रहा हूं जो डेल्फी एक्सई के साथ शामिल है।टीजीआईफ़ीमेज पारदर्शिता समस्या
जो मैं करने की कोशिश कर रहा हूं वह एक फ़ाइल से एक गिफ लोड करता है और सभी फ्रेम को बिटमैप में निकाला जाता है।
यह मैं अब तक क्या किया है:
procedure ExtractGifFrames(FileName: string);
var
Gif: TGifImage;
Bmp: TBitmap;
i: Integer;
begin
Gif := TGifImage.Create;
try
Gif.LoadFromFile(FileName);
Bmp := TBitmap.Create;
try
Bmp.SetSize(Gif.Width, Gif.Height);
for i := 0 to Gif.Images.Count - 1 do
begin
if not Gif.Images[i].Empty then
begin
Bmp.Assign(Gif.Images[i]);
Bmp.SaveToFile('C:\test\bitmap' + IntToStr(i) + '.bmp');
end;
end;
finally
Bmp.Free;
end;
finally
Gif.Free;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenPictureDialog1.Execute then
begin
ExtractGifFrames(OpenPictureDialog1.FileName);
end;
end;
समस्या का सामना करना पड़ रहा हूँ अलग Gifs का एक बहुत के साथ कुछ पारदर्शिता मुद्दा है, और भी आकार की समस्याओं के साथ है।
यहाँ है कि ऊपर मेरी कोड का उपयोग कर बचा लिया गया कुछ उदाहरण बिटमैप्स हैं:
आप परिणाम महान नहीं कर रहे हैं देख सकते हैं, वे आकार और पारदर्शिता मुद्दे हैं।
मुझे पता है कि GIF फ़ाइलें स्वयं भ्रष्ट नहीं हैं, क्योंकि मैं उन्हें अपने वेब ब्राउज़र के माध्यम से लोड कर सकता हूं और वे बिना किसी दोष के सही तरीके से प्रदर्शित होते हैं।
मैं फ़ाइल से एक गिफ कैसे लोड कर सकता हूं, किसी भी गुणवत्ता को खोए बिना बिटमैप को प्रत्येक फ्रेम असाइन कर सकता हूं?
मैं जिस तरह से कैसे कुंजी फ्रेम महसूस कर रहे हैं पता चला। यह प्रत्येक फ्रेम (यदि उपलब्ध हो) के लिए 'GraphicControlExtension.Disposal' द्वारा निर्धारित किया जाता है। इसका मतलब है कि मौजूदा फ्रेम पहले से ही प्रस्तुत बफर के साथ क्या करना चाहिए। एक स्रोत के रूप में आप 'TGIFRenderer' से अधिक का उपयोग कर सकते हैं, वह कक्षा जो वास्तव में एनिमेशन प्रदान करती है। मैं शाम को एक उदाहरण लिखने की कोशिश करूंगा (यदि कोई तेज़ नहीं होगा :-) मुझे अब जाना है ... – TLama