Szukam biblioteki animacji .NET C# gif (nie musi być za darmo), która pozwoli mi pobrać plik gif i dołączyć do niego ramkę jpeg lub jeszcze jeden plik GIF. Będę również musiał dodać opóźnienie zmiany między ramkami. W odpowiedzi na podobne pytania zazwyczaj odwołujemy się do podstawowej biblioteki, która pozwala tylko na dodanie stałego opóźnienia między obrazami statycznymi.zaawansowana biblioteka gif
6
A
Odpowiedz
7
Skończyłem modyfikowanie kodu http://www.codeproject.com/KB/GDI-plus/NGif.aspx, aby uzyskać to, czego potrzebowałem i zadziałało! :)
do przenoszenia pliku źródłowego gif dodałem tą metodą:
private bool AddGifFrames(Image image)
{
// implementation
var fd = new FrameDimension(image.FrameDimensionsList[0]);
int frameCount = image.GetFrameCount(fd);
var frames = new List<Tuple<int, Image>>();
if (frameCount > 1)
{
frames = new List<Tuple<int, Image>>();
//0x5100 is the property id of the GIF frame's durations
//this property does not exist when frameCount <= 1
byte[] times = image.GetPropertyItem(0x5100).Value;
for (int i = 0; i < frameCount; i++)
{
//selects GIF frame based on FrameDimension and frameIndex
image.SelectActiveFrame(fd, i);
//length in milliseconds of display duration
int length = BitConverter.ToInt32(times, 4 * i);
//save currect image frame as new bitmap
frames.Add(new Tuple<int, Image>(length, new Bitmap(image)));
}
} // Not animated
foreach (var frame in frames)
{
HandleFrame(frame.Item2, frame.Item1);
}
return true;
}
i jak dla niestandardowych opóźnień Mam zmodyfikował tę metodę:
protected void WriteGraphicCtrlExt(int? delay)
{
Fs.WriteByte(0x21); // extension introducer
Fs.WriteByte(0xf9); // GCE label
Fs.WriteByte(4); // data block size
int transp, disp;
if (Transparent == Color.Empty)
{
transp = 0;
disp = 0; // dispose = no action
}
else
{
transp = 1;
disp = 2; // force clear if using transparent color
}
if (Dispose >= 0)
{
disp = Dispose & 7; // user override
}
disp <<= 2;
// packed fields
Fs.WriteByte(Convert.ToByte(0 | // 1:3 reserved
disp | // 4:6 disposal
0 | // 7 user input - 0 = none
transp)); // 8 transparency flag
WriteShort(delay ?? Delay); // delay x 1/100 sec
Fs.WriteByte(Convert.ToByte(TransIndex)); // transparent color index
Fs.WriteByte(0); // block terminator
}
Podsumowując - ten kod może dodać gif jako ramkę, dzieląc ją na ramki i dodając je, a także może dodać niestandardowe opóźnienia.
Powiązane problemy
- 1. Zaawansowana logika szablonowa Django
- 2. zaawansowana c lub C++ książka
- 3. Zaawansowana konfiguracja z golang Viper lib
- 4. Jak mogę wygenerować obrazy GIF w .NET?
- 5. Animacja GIF w Gnuplot
- 6. html css Animacja Gif
- 7. Animacje jQuery GIF
- 8. Obraz ładowany przez Picasso do GifImageView (biblioteka do rysowania gif android)
- 9. Zaawansowana pętla Java: co jest (nie) oceniane w nagłówku pętli?
- 10. Niestandardowa zaawansowana walidacja jednostek za pomocą Dynamic Data
- 11. Edytowanie GIF w języku C#
- 12. GLSL Gif Roztrząsanie Efekt: Optymalizacja
- 13. UIImageView + animowany GIF zawsze LOOPS
- 14. Zapisz gif do android galerii
- 15. png na gif z przezroczystością
- 16. Odtwarzanie animowanego gif z libgdx
- 17. animowany gif ffmpeg jest plamisty
- 18. Jak podzielić .gif w ramkach?
- 19. Konwersja obrazu GIF do NSData
- 20. wyświetlanie animacji gif w WPF
- 21. Silverlight 3 i animowany gif
- 22. Czy można wstrzymać obraz .gif?
- 23. PIL - Konwersja ramek GIF do JPG
- 24. Biblioteka grafiki Java
- 25. ImageMagick - Tworzenie 2 GIF-ów w GIF-y przy użyciu konwertowania IM
- 26. Z PHP, czy można połączyć animowany GIF z JPG i zachować animację GIF?
- 27. Jak wygenerować animowany GIF manipulowania? 8.0.1
- 28. Jak odtwarzać plik GIF w systemie Android?
- 29. Utwórz animowaną .gif z .jpeg/png
- 30. Nie wysłano żądania GIF Google Analytics
Został zamknięty, ponieważ, jak się go zapytało, był duplikatem. Nie wspomniałeś o konieczności zmiany opóźnienia między ramkami lub o tym, że znalazłeś poprzednie odpowiedzi, które nie spełniały twoich potrzeb. :) –
Zgadzam się, po prostu nie spodziewałem się, że tak szybko się zamknie :) –
Proszę nie podpisywać swoich postów. –