[IOS] Ändern Sie die Anzeigezeit für jedes Bild der GIF-Animation in Pythonista3.

Einführung

Zuvor beim Schreiben von Artikeln, die von GIF-Animationen abhängig sind Details zum GIF-Format. Ich habe einen großartigen Artikel namens htm # ImageBlock gefunden. Jedes Bild in der GIF-Datei hat eine Verzögerungszeit von 2 Bytes, die in Schritten von 0,01 Sekunden festgelegt zu sein scheint.

Das Ziel ist [Graphic Control Extension]

Es ist natürlich, dass die GIF-Datei Bilddaten enthält, aber es scheint, dass sich vor den Bilddaten ein 8-Byte-Block namens ** Graphic Control Extension ** befindet. Graphic Control Extension --Erweiterungseinführer (1B) = 0x21 <= Markierung 1

Überprüfen Sie mit einem Binäreditor

Ich habe die GIF-Animation mit einer Verzögerungszeit von 1 Sekunde mit einem Binäreditor überprüft.

5A681C6A-B727-43D3-BDCA-E817CD2029F7.png Es gibt eine Verzögerungszeit "0x6400", die den Markierungen 1-3 "0x21f904" ordnungsgemäß folgt. Da es in ** 1 Sekunde ** eingestellt ist, ist es ** 100 **, wenn es durch ** 0,01 ** geteilt wird, also "100 = 0x0064", und wenn es in Little Dian gespeichert wird, ist es definitiv "0x6400". Sie können die Anzeigezeit für jedes Bild ** ändern, indem Sie diesen Wert ändern.

Lass es uns versuchen

ChangeDelay.py


#Öffnen Sie die GIF-Datei als Binärdaten.
FileName = 'test.gif'
with open(FileName,'rb') as f:
	Bin = f.read()

#Suchen Sie nach Graphic Control Extention und notieren Sie die Position und den Verzögerungswert in List.
GCE = b'\x21\xf9\x04'
DelayList = []
point = 0
while point < len(Bin):
	start = Bin.find(GCE,point)
	if start<0:break
	delay = int.from_bytes(Bin[start+4:start+6],byteorder="little")
	DelayList.append([start+4,delay])
	point = start+1

#Ändern Sie die erste auf 1 Sekunde und die zweite Hälfte auf das Fünffache der Länge.
DelayList[0][1]=100
for i in range(1,len(DelayList)//2):
	DelayList[-i][1]*=5

#Schreiben Sie Binärdaten neu.
for point,delay in DelayList:
	Bin = Bin[:point] + delay.to_bytes(2,byteorder="little") + Bin[point+2:]
	

#Speichern Sie Binärdaten als GIF.
with open('temp.gif','wb') as f:
	f.write(Bin)

Before Alle 20 Bilder sind auf 0,05 Sekunden eingestellt. 90E284C4-F734-4E82-B99E-6F4636142A32.gif

After Die erste wurde auf 1 Sekunde eingestellt und die zweite Hälfte wurde fünfmal umgeschrieben. DEA4F364-7E69-4607-BA68-2711AC552EDF.gif

Recommended Posts

[IOS] Ändern Sie die Anzeigezeit für jedes Bild der GIF-Animation in Pythonista3.
Überprüfen Sie die Verarbeitungszeit und die Anzahl der Aufrufe für jeden Prozess mit Python (cProfile).
Überprüfen Sie die Funktionsweise von Python für .NET in jeder Umgebung
Zusammenfassung der Stolperpunkte in Django zum ersten Mal
Zeigen Sie den Fahrplan des Morioka-Busortungssystems in Pythonista an
Ermitteln Sie die Anzahl der Vorkommen für jedes Element in der Liste
[IOS] Zerlegen Sie die GIF-Animation mit Pythonista3.
Ändern Sie die Liste in der for-Anweisung
MongoDB mit Python zum ersten Mal
Ändern Sie die Schriftgröße der Legende in df.plot
Passen Sie die Verteilung jeder Gruppe in Python an
Lesen Sie die Ausgabe von subprocess.Popen in Echtzeit
Geben Sie für jede Datei die angegebene Tabelle der Oracle-Datenbank in Python in Excel aus
Geben Sie das Beleuchtungsmodell für SCN-Material in Pythonista an
Ändern Sie die Zeitzone in Oracle Database Docker
Registrieren Sie zum ersten Mal eine Aufgabe in cron
Überprüfen Sie, ob in Java BigQuery-Tabellen vorhanden sind
Weisen Sie dem Namen der zerlegten PDF-Datei für jede Seite ein Datum zu
Zeigen Sie Matsuyas Gutschein (QR-Code) mit Pythonista für iOS an
Die Geschichte der Schaffung eines "Geist- und Zeit-Chatrooms" exklusiv für Ingenieure im Unternehmen
Der Standardstil (CSS) von Pandas-Datenrahmen, die von der Anzeige in Google Colab ausgegeben werden, wurde geändert
[IOS] GIF-Animation mit Pythonista3. Ich war süchtig danach.
[In kürzester Zeit verstehen] Python-Grundlagen für die Datenanalyse
[Python] Zeigt die verstrichene Zeit in Stunden, Minuten und Sekunden an (00:00:00)
Ändern des Aufbewahrungszeitraums für CloudWatch-Protokolle in Lambda
Die Bildanzeigefunktion von iTerm ist praktisch bei der Verarbeitung von Bildern.
Google sucht mit Python nach der Zeichenfolge in der letzten Zeile der Datei
Ruft den Index jedes Elements der Verwirrungsmatrix in Python ab
Schlafverarbeitung für einen bestimmten Zeitraum (Sekunden) oder länger in Python
Einstellungen zum Ausführen eines Tests jedes Mal, wenn Sie eine Datei mit watchmedo (watchdog) im Editor speichern
Die Geschichte, zum ersten Mal seit 5 Jahren wieder an die Front zurückzukehren und Python Django umzugestalten