In meiner Anwendung gibt es ein Bild hochladen und wenn ein Benutzer GIF-Bild hochladen möchte. Ich muss die Schleife in einem Bild deaktivieren und speichern, in der Ergebnis-GIF-Bild eines Benutzers muss einmal abgespielt werden und danach aufhören. Vielleicht muss ich den Zeiger vom letzten Bild des Gif-Bildes löschen? Irgendwelche Ideen?So deaktivieren Sie eine Schleife für GIF-Bild und speichern Sie es in C#
Antwort
Sie müssen den Erweiterungsblock Netscape Application hinzufügen oder ändern. In diesem Block sind 2 Bytes den Looping zu steuern, siehe Details in der folgenden Antwort:
https://stackoverflow.com/a/28486261/3936440
ich keine richtige Paket für GIF Manipulation finden konnte, aber ich denke, Sie BumpKit als Inspiration nutzen können als hier erwähnt
https://stackoverflow.com/a/32810041/3936440
oder
https://github.com/DataDink/Bumpkit/blob/master/BumpKit/BumpKit/GifEncoder.cs
Ich habe eine Antwort gefunden, danke an alle, die mir geholfen haben.
Das GIF-Bild hat eine Reihe von Eigenschaften, die Sie erhalten können, wenn Sie die spezifische Adresse eines Bytes jeder Eigenschaft kennen. Zum Beispiel ist 20737 Looping-Eigenschaft. Wenn diese Eigenschaft auf 0 gesetzt wird, wird das Bild endlos geloopt, aber wenn diese Eigenschaft auf 0 gesetzt wird, wird das gif image unendlich wiederholt. Die example habe ich hier platziert.
var image = System.Drawing.Image.FromFile(path)
var IsLooped = BitConverter.ToInt16(image.GetPropertyItem(20737).Value, 0) != 1;
Sie sollten sich dessen auch bewusst sein: - https://bugzilla.mozilla.org/show_bug.cgi?id=1255497#c4 – saurabheights
Ist das korrekt, nicht? Wert 0 in "NETSCAPE2.0" bedeutet Schleife für immer. Fehlender "NETSCAPE2.0" -Block bedeutet 0 Wiederholungen = Schleife einmal. Wert 1 in "NETSCAPE2.0" bedeutet 1 Wiederholung = 2 Schleifen. Wert 2 in "NETSCAPE2.0" bedeutet 2 Wiederholungen = 3 Schleifen. –
Hi Pavel, nur ein Bild überprüft. Es ist wie im Kommentar erwähnt. Führen Sie dies aus: 'gifsicle --no-loopcount < input.gif > output.gif' und es wird Netscape Extension Block entfernen und das Bild nicht Loops sowohl in Chrome & Firefox. Bestätigt mit 'xxd output.gif | grep NETSCAPE' und Netscape-Erweiterungsblock wurde entfernt. Fertig auf ubuntu. Ich hoffe es hilft. Gifsicle Verweis - https://www.lcdf.org/gifsicle/man.html – saurabheights
- 1. So schneiden und speichern Sie eine JPEG-Bilddatei in C#
- 2. So deaktivieren Sie eine Funktion in Azure
- 3. So deaktivieren Sie eine ImageCheckRow
- 4. So deaktivieren Sie eine App
- 5. So deaktivieren Sie eine TextView
- 6. So deaktivieren Sie eine markierte Android Checkbox
- 7. So deaktivieren Sie alle Schaltflächen
- 8. Fangen Sie alles und speichern Sie es in eine Variable
- 9. So deaktivieren Sie Paketverlustverhinderung TCP C#
- 10. So speichern und senden Sie eine Datei
- 11. Wie speichern Sie Schleife für Datenrahmen?
- 12. So speichern Sie einen Funktionszeiger in C#
- 13. So speichern Sie Variablen in C#
- 14. erstellen Sie eine Funktion für das Balkendiagramm und rufen Sie sie in einer Schleife auf und speichern Sie alle Graphen
- 15. So speichern Sie Hashwerte in eine CSV
- 16. So speichern Sie eine "CroppedBitmap"
- 17. So deaktivieren Sie eine Optimierung in LLVM
- 18. So deaktivieren Sie CSS-Module für eine Datei in Webpack
- 19. So speichern Sie die Zelladresse in einer Schleife
- 20. So deaktivieren und aktivieren Sie eine Schaltfläche mit AngularJs
- 21. So speichern Sie eine Textdatei in einem Vektor (C++)
- 22. So deaktivieren Sie PrtScr
- 23. So speichern Sie Änderungen in einem DB für C#
- 24. So speichern/speichern Sie temporäre Werte und vergleichen Sie?
- 25. So speichern Sie eine Variable in VBA
- 26. So deaktivieren Sie eine Schaltfläche beim Start (Visual C# winforms)
- 27. So deaktivieren Sie setCharacteristicNotification
- 28. So deaktivieren Sie "periodicals_call_remote"
- 29. So deaktivieren Sie eine Klasse mit jquery
- 30. So fügen Sie eine Schleife in Makro
* "Ich muss Schleifen in einem Bild deaktivieren und speichern" * - bedeutet, dass Sie einen bestimmten Frame speichern möchten? – Sinatr
@Sinatr Nein, gif Bild ist Teil des Werbebanners auf einer anderen Seite und eine der Anforderungen von dieser Seite ist gif ohne Endlosschleife. –
@Sinatr meinst du, er sollte ein einzelnes Bild als ein anderes Bild speichern und es auf einem Client ersetzen, nachdem die Schleife fertig ist? – ASpirin