[IOS] Modifiez la durée d'affichage de chaque image de l'animation GIF dans Pythonista3.

introduction

Auparavant, lors de l'écriture Articles accro à l'animation GIF, [Détails du format GIF](http://www.tohoho-web.com/wwwgif. J'ai trouvé un excellent article appelé htm # ImageBlock). Chaque image du fichier GIF a un délai de 2 octets, qui semble être défini par incréments de 0,01 seconde.

L'objectif est [Extension de contrôle graphique]

Il est naturel qu'il y ait des données d'image dans le fichier GIF, mais il semble qu'il y ait un bloc de 8 octets appelé ** Extension de contrôle graphique ** devant les données d'image. Graphic Control Extension --Introducteur d'extension (1B) = 0x21 <= marque 1 --Étiquette de contrôle graphique (1B) = 0xf9 <= marque 2 --Block Size (1B) = 0x04 <= marque 3

Vérifiez avec un éditeur binaire

J'ai vérifié l'animation GIF avec le temps de retard réglé à 1 seconde avec un éditeur binaire.

5A681C6A-B727-43D3-BDCA-E817CD2029F7.png Il y a un temps de retard 0x6400 suivant correctement les marques 1-30x21f904. Comme il est défini en ** 1 seconde **, il est de ** 100 ** lorsqu'il est divisé par ** 0,01 **, donc 100 = 0x0064, et lorsqu'il est stocké dans Little Dian, il est définitivement 0x6400. Vous pouvez modifier la durée d'affichage de chaque image ** en modifiant cette valeur.

essayons

ChangeDelay.py


#Ouvrez le fichier GIF en tant que données binaires.
FileName = 'test.gif'
with open(FileName,'rb') as f:
	Bin = f.read()

#Recherchez l'extension de contrôle graphique et enregistrez la position et la valeur de retard dans la liste.
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

#Remplacez le premier par 1 seconde et le second par 5 fois la longueur.
DelayList[0][1]=100
for i in range(1,len(DelayList)//2):
	DelayList[-i][1]*=5

#Réécrivez les données binaires.
for point,delay in DelayList:
	Bin = Bin[:point] + delay.to_bytes(2,byteorder="little") + Bin[point+2:]
	

#Enregistrez les données binaires au format GIF.
with open('temp.gif','wb') as f:
	f.write(Bin)

Before Les 20 images sont réglées sur 0,05 seconde. 90E284C4-F734-4E82-B99E-6F4636142A32.gif

After Le premier a été réglé sur 1 seconde et la seconde moitié a été réécrite 5 fois. DEA4F364-7E69-4607-BA68-2711AC552EDF.gif

Recommended Posts

[IOS] Modifiez la durée d'affichage de chaque image de l'animation GIF dans Pythonista3.
Vérifiez le temps de traitement et le nombre d'appels pour chaque processus avec python (cProfile)
Vérifiez le fonctionnement de Python pour .NET dans chaque environnement
Résumé des points d'achoppement à Django pour la première fois
Afficher les horaires du système de localisation des bus Morioka dans Pythonista
Obtenez le nombre d'occurrences pour chaque élément de la liste
[IOS] Démontez l'animation GIF avec Pythonista3.
Changer la liste dans l'instruction for
MongoDB avec Python pour la première fois
Changer la taille de police de la légende dans df.plot
Faites correspondre la distribution de chaque groupe en Python
Lire la sortie du sous-processus, ouvrir en temps réel
Sortie de la table spécifiée de la base de données Oracle en Python vers Excel pour chaque fichier
Spécifier le modèle d'éclairage du matériau SCN dans Pythonista
Modifier le fuseau horaire dans Oracle Database Docker
Enregistrer une tâche dans cron pour la première fois
Vérifier l'existence de tables BigQuery en Java
Attribuer une date au nom du PDF décomposé pour chaque page
Afficher le coupon de Matsuya (code QR) avec Pythonista pour iOS
L'histoire de la création d'un «espace de discussion sur l'esprit et le temps» exclusivement pour les ingénieurs de l'entreprise
Modification du style par défaut (CSS) des cadres de données pandas générés par affichage dans Google Colab
[IOS] Animation GIF avec Pythonista3. J'en étais accro.
[Comprendre au plus court] Principes de base de Python pour l'analyse des données
[Python] Afficher le temps écoulé en heures, minutes et secondes (00:00:00)
Modifier la période de conservation des journaux CloudWatch Logs dans Lambda
La fonction d'affichage d'image d'iTerm est pratique lors du traitement d'images.
Google recherche la chaîne sur la dernière ligne du fichier en Python
Obtenez l'index de chaque élément de la matrice de confusion en Python
Mettre le processus en veille pendant un certain temps (secondes) ou plus en Python
Paramètres d'exécution d'un test à chaque fois que vous enregistrez un fichier dans l'éditeur à l'aide de watchmedo (chien de garde)
L'histoire du retour au front pour la première fois en 5 ans et de la refactorisation de Python Django