मैं दो अलग-अलग gif फ़ाइल को एक फ़ाइल में गठबंधन करने की कोशिश कर रहा हूं।सी # में, शायद यह छवि के लिए एक बग है .aveAdd, जो इसे हल करने में मेरी मदद कर सकता है?
सबसे पहले, मैंने gif प्रारूप के बारे में बहुत कुछ सीखा। और मुझे पता है कि देरी समय मान ग्राफिक्स कंट्रोल एक्सटेंशन में सेट है जो gif फ़ाइल का एक ब्लॉक है।
मैं पहली बार gif बचाया और FrameDelay मूल्य, के रूप में नीचे दिए गए कोड को सेट करें:
ImageCodecInfo codeInfo = GetEncoder(ImageFormat.Gif);
System.Drawing.Imaging.Encoder saveEncoder = System.Drawing.Imaging.Encoder.SaveFlag;
EncoderParameters parameters = new EncoderParameters(1);
parameters.Param[0] = new EncoderParameter(saveEncoder, (long)EncoderValue.MultiFrame);
PropertyItem PropertyTagFrameDelay = img1.GetPropertyItem(0x5100);
PropertyTagFrameDelay.Value = new byte[] { 0x96, 0x00 };// this is the delay value 0x0096, means 1.5 second
img1.SetPropertyItem(PropertyTagFrameDelay);
PropertyItem LoopCount = img1.GetPropertyItem(0x5101);
LoopCount.Value = new byte[] { 0x00, 0x00 };// this means the gif loops endlessly
img1.SetPropertyItem(LoopCount);
img1.Save(@"c:\ddd.gif", codeInfo, parameters);
तो मैं दूसरे फ्रेम के रूप में एक और छवि को जोड़ने की कोशिश की।
parameters = new EncoderParameters(1);
parameters.Param[0] = new EncoderParameter(saveEncoder, (long)EncoderValue.FrameDimensionTime);
PropertyTagFrameDelay = img2.GetPropertyItem(0x5100);
PropertyTagFrameDelay.Value = new byte[] { 0x96, 0x00 };// this is the delay value 0x0096, means 1.5 second
img2.SetPropertyItem(PropertyTagFrameDelay);
अंतिम, मुझे इस छवि को समाप्त करना चाहिए।
parameters = new EncoderParameters(1);
parameters.Param[0] = new EncoderParameter(saveEncoder, (long)EncoderValue.Flush);
img1.SaveAdd(parameters);
और मैंने पाया कि दूसरे फ्रेम की देरी समय हमेशा 0.
है मैं विधि का एक बहुत कोशिश की, लेकिन मैं पता नहीं 0x96 के रूप में यह सुनिश्चित करने के लिए है।
तो इसमें क्या गलत है?
यह जीडीआई + में निर्मित जीआईएफ एन्कोडर द्वारा समर्थित नहीं है। आप यह काम नहीं कर सकते। –
वास्तव में? क्या यह सच है?? –
ठीक है, बेवकूफ सवाल, लेकिन बस यह सुनिश्चित करने के लिए: आप एनिमेटेड जीआईएफ के बारे में बात कर रहे हैं, है ना? – RenniePet