Wiele pytań dotyczących tworzenia animowanego gifa z zestawu obrazów png sugeruje użycie wariantu convert
polecenia ImageMagick :
convert -delay 2 -loop 0 *.png animated.gif
Mam jednak kilka tysięcy zdjęć i dlatego convert
zużywa całą moją pamięć, zamienia, a następnie ulega awarii. Jakie istnieje alternatywne oprogramowanie, które jest bardziej świadome pamięci? Mógłbym użyć innego otwartego formatu, jeśli .gif
nie jest obsługiwany, i wolę narzędzie CLI.
command-line
software-recommendation
images
conversion
dotancohen
źródło
źródło
convert -delay 2 -loop 0 0*.png animated.gif
konwertują tylko pliki, które zaczynają się od „0”. I tak dalej.Odpowiedzi:
Wygląda na to, że próbujesz nagrać film. W takim przypadku użyłbym odpowiedniego formatu wideo.
W takim przypadku użyłbym ffmpeg do konwersji pojedynczych plików PNG na wideo H.264. Ponieważ ffmpeg jest przystosowany do pracy z filmami, które mogą trwać wiele godzin, nie powinien mieć problemu z tysiącami twoich zdjęć. Użycie H.264 zamiast animowanego gif spowoduje znaczną poprawę jakości obrazu.
Coś takiego powinno ci działać:
-framerate 1/2
: Ustawia liczbę klatek na sekundę na 1/2 FPS lub 2 sekundy na klatkę.-i img%04d.png
: To mówi ffmpeg czytać plikiimg0000.png
chociażimg9999.png
.-c:v libx264
: Użyj kodeka wideo libx264.-crf <number>
: Ustawienie jakości. 0 do 51. 23 jest wartością domyślną. 0 to prawdziwe bezstratne kodowanie, które będzie dość dużą przepustowością. 18 jest prawie wizualnie bezstratny.-r 30
: Ustaw wyjściową liczbę klatek na sekundę na 30 FPS. Każdy z obrazów wejściowych zostanie zduplikowany, aby uzyskać dane wyjściowe określone w tym miejscu. Możesz pozostawić ten parametr wyłączony, a plik wyjściowy będzie miał wejściową liczbę klatek na sekundę, ale wynikowy film nie wyświetlał się poprawnie, gdy próbowałem go teraz.out.mp4
: Nazwa pliku wyjściowego.Referencje:
źródło
Osobiście uruchomiłbym go tylko na ograniczonej liczbie plików zamiast na raz. Na przykład coś takiego:
źródło
Użyj,
-limit memory 1GiB
aby ograniczyć ilość pamięciconvert
.Tysiące zdjęć stworzyłyby ogromny plik GIF, który większość komputerów będzie miała problem z wyświetleniem. Moje animowane pliki GIF trzymam poniżej 200 obrazów, jeśli to możliwe. Im mniej, tym lepiej. Jeśli numerujesz zdjęcia, to polecenie usunie obrazy nieparzyste
rm *[13579].png
.Oto mój typowy proces tworzenia animowanego GIF ze sceny filmowej:
źródło
Być może APNG może ci się przydać . Jest obsługiwany przez niektóre przeglądarki , w tym Firefox, ale w tej chwili z wyjątkiem Chrome i IE. Ponieważ jest to tylko rozszerzenie PNG, bardzo łatwo jest przekonwertować PNG na APNG. Apngasm narzędzie może to zrobić. Ale format jest tak prosty, że niedawno napisałem asembler APNG dla Sage. Dostosowanie tego kodu byłoby alternatywą.
źródło
Jeśli masz tysiące png-s, format anigif jest dziwny. Zrobiłbym to w ten sposób, używając
avconv
:źródło
gifsicle to narzędzie wiersza polecenia do obsługi animacji GIF. Jeśli chcesz wymienić pamięć na szybkość, możesz użyć przełącznika --conserve-memory.
źródło
Oprócz innych odpowiedzi: ponieważ chcesz utworzyć plik GIF, zakładam, że chcesz wyświetlić obraz na stronie internetowej. Jeśli tak, nie zawracałbym sobie głowy konwersją twoich plików PNG. Wystarczy wyszukać w Google „pokaz slajdów javascript” i użyć jednego z milionów darmowych skryptów. Lub napisz własne, to naprawdę trywialne.
Korzyści z robienia tego w ten sposób to:
w przeglądarce ładowany jest tylko jeden obraz, pokaz slajdów rozpoczyna się szybko i nie zajmuje dużo pamięci RAM na komputerze użytkownika.
rozwiązanie skaluje się do milionów zdjęć. Lub miliardy, jeśli jesteś wystarczająco cierpliwy, aby je wszystkie oglądać :)
Możesz dodać do swojej strony elementy sterujące, aby wstrzymywać, przewijać do tyłu, zmieniać opóźnienie lub przechodzić do określonej klatki.
źródło