Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

ImageMagick compression d'une image gif

12 réponses
Avatar
unbewusst.sein
je crée une image gif animée à partir d'images png, toutes ces images
sont crées par ImageMagick.

l'image que je souhaite remplacer sur mon tél mobile a un taux de
compression de "1:3"

j'ai listé les compressions possible avec IM :
convert -list compress
BZip
DXT1
DXT3
DXT5
Fax
Group4
JPEG
JPEG2000
Lossless
LosslessJPEG
LZW
None
RLE
Zip
RunlengthEncoded

j'ai essayé BZip, DXT1, DXT5, LZW et Zip sans grand success mon argument
est de la forme :
convert -compress BZip ...
sans mentionner de taux de compression (la docum ne parle que de qualité
pour jpeg).

résultat mon image fait 400ko (avec une compression affichée par
GraphicConverter de 4:1) alors que l'image à remplacer, de même taille
(240x320px^2) et de même nombre d'animation ne fait que 26 ko
(compression affichée par GraphicConverter de 1:3)

les images intermédiaires sont réalisées en png car j'utilise -gaussian
qui n'est pas très jojo si directement fait en gif.

quelqu'un connaitrait-il le moyen d'indiquer le taux de compression ?

ou une alternative (sur GraphicConverter cela ne me semble pas
modifiable pour du gif)

--
Une Bévue

10 réponses

1 2
Avatar
SAM
Une Bévue a écrit :
je crée une image gif animée à partir d'images png, toutes ces images
sont crées par ImageMagick.



Perso, je réserve les images aimées pour les petits formats et en suis
resté au gif
(depuis les images fixes jusqu'à l'animation).
Je ne sais ce que fabrique ImageMagick, j'utilise GifBuilder (qui est du
siècle dernier).

L'avantage du gif :
- à la base : 256 couleurs (déjà moins lourd que des millions)
- d'une image à l'autre, l'autre image n'a que la modif/précédente
- une palette est créée pour minimiser le nbre de couleurs

l'image que je souhaite remplacer sur mon tél mobile a un taux de
compression de "1:3"

j'ai listé les compressions possible avec IM :



cf + haut
comme on parle d'animation, il n'y a pas que la compression d'image qui
compte

convert -list compress



aucune idée de tout ça sauf que je vois pas à quoi servent les zip pour
des images ?

j'ai essayé BZip, DXT1, DXT5, LZW et Zip sans grand success mon argument
est de la forme :



... le zip ne compresse pas les images.
Pour réduire le poids d'une image on agit sur sa taille ou sa qualité.
(le jpg à 50% reduit la qualité, pas de miracle compressif)
Le png compresse, mais là ça me reste mystéreux quant aux méthodes (j'ai
l'impression qu'il y a plusieurs options)

résultat mon image fait 400ko (avec une compression affichée par
GraphicConverter de 4:1) alors que l'image à remplacer, de même taille
(240x320px^2) et de même nombre d'animation ne fait que 26 ko
(compression affichée par GraphicConverter de 1:3)



Ha! ben! bravo! belle réussite :-)

les images intermédiaires sont réalisées en png car j'utilise -gaussian
qui n'est pas très jojo si directement fait en gif.



quoi est censé faire -gaussian ?
Y a rien de très jojo si on utilise du gif alors qu'on est parti d'un bô png

quelqu'un connaitrait-il le moyen d'indiquer le taux de compression ?



et pourquoi n'utilises-tu pas GC ?
c'est quand même bien dans ses cordes, ce me semble.

ou une alternative (sur GraphicConverter cela ne me semble pas
modifiable pour du gif)



Rien compris.

Finalement on a une anim en gif ?
Donc, normalement, et à mon idée, toutes les images intermédiaires sont
en gif.

Yapuka tenter GifBuilder.
Ou peut-être GC
- menu : Image / Couleur / Optimiser la palette
- ré-enregistrer l'bazar avec l'option : minimiser les couleurs

Ou tout revoir à la manu : supprimer dans chaque image intermédiaire
tout ce qui n'est pas nouveau par rapport à la précédente.

Sur <http://www.versiontracker.com>
avec search : gif
je vois qques softs pour animations
mais pas d'ImageMagick

--
sm
Avatar
Thierry B.
--{ SAM a plopé ceci: }--

résultat mon image fait 400ko (avec une compression affichée par
GraphicConverter de 4:1) alors que l'image à remplacer, de même taille
(240x320px^2) et de même nombre d'animation ne fait que 26 ko
(compression affichée par GraphicConverter de 1:3)



Ha! ben! bravo! belle réussite :-)



Je pense que convert enchaine les différentes trames à la suite
les unes des autres, alors que des logiciels plus élaborés cherchent
dans chaque image la plus petite zone rectangulaire qui a changée
et ne met que celle-ci (avec ses coordonnées) dans le fichier
résultant. Donc, si seule une petite partie de l'image est
censée clignoter, le résultat en taille sera bien plus faible.

Et si quelqu'un connait un bon outil pour faire des gifs animées
sous Unix, qu'il parle maintenant ou se taise à jamais...

--
Oui. C'est incontestablement le concept de base de la régulation selon
Windows : le reboot remet dans un état stable. On peut ricaner, mais
l'idée est manifestement excellente :-)


--{ SL, dans fcol.debats }--
Avatar
unbewusst.sein
SAM wrote:

Perso, je réserve les images aimées pour les petits formats et en suis
resté au gif



je n'ai pas le choix de la taille, c'est le spalsh screen de mon mobile
(240x420)


(depuis les images fixes jusqu'à l'animation).
Je ne sais ce que fabrique ImageMagick, j'utilise GifBuilder (qui est du
siècle dernier).



ouais, mais les images d'origine, il faut les comprimer, je n'ai pas
trouver le moyen avec GraphicConverter...

L'avantage du gif :
- à la base : 256 couleurs (déjà moins lourd que des millions)
- d'une image à l'autre, l'autre image n'a que la modif/précédente
- une palette est créée pour minimiser le nbre de couleurs




ça je sais, je crée les images en png PUIS, les converti en gif...

... le zip ne compresse pas les images.
Pour réduire le poids d'une image on agit sur sa taille ou sa qualité.



il ne me semble pas y avoir d'argument qualité pour le gif, en tk pas
trouvé...

(le jpg à 50% reduit la qualité, pas de miracle compressif)
Le png compresse, mais là ça me reste mystéreux quant aux méthodes (j'ai
l'impression qu'il y a plusieurs options)

> résultat mon image fait 400ko (avec une compression affichée par
> GraphicConverter de 4:1) alors que l'image à remplacer, de même taille
> (240x320px^2) et de même nombre d'animation ne fait que 26 ko
> (compression affichée par GraphicConverter de 1:3)

Ha! ben! bravo! belle réussite :-)

> les images intermédiaires sont réalisées en png car j'utilise -gaussian
> qui n'est pas très jojo si directement fait en gif.

quoi est censé faire -gaussian ?



ça ajoute une hombre gaussienne au texte, mon image est simplement un
texte qui défile sur le fond.

Y a rien de très jojo si on utilise du gif alors qu'on est parti d'un bô png

> quelqu'un connaitrait-il le moyen d'indiquer le taux de compression ?

et pourquoi n'utilises-tu pas GC ?
c'est quand même bien dans ses cordes, ce me semble.



parce qu'image magick je le scripte facilement :

------------------------------------------------------------------------
#!/opt/local/bin/ruby

def i_to_s(i)
return i.to_s unless i<10
return "0"+i.to_s
end

#¾gin
for i in 1..18 do
`convert -compress BZip -size 240x320 xc:transparent -font
Bookman-DemiItalic -pointsize 40 -draw "text 15,#{i*10} 'OpenTwin'"
-channel RGBA -gaussian 0x6 -fill white -stroke grey -draw "text
15,#{i*10-5} 'OpenTwin'" OpenTwin_tmp_#{i_to_s(i)}.png`
`composite -compress BZip -gravity center
OpenTwin_tmp_#{i_to_s(i)}.png gradiant.gif OpenTwin_#{i_to_s(i)}.png`
`convert -compress BZip OpenTwin_#{i_to_s(i)}.png
OpenTwin_#{i_to_s(i)}.gif`
`rm -f OpenTwin_tmp_#{i_to_s(i)}.png`
`rm -f OpenTwin_#{i_to_s(i)}.png`
puts i_to_s(i)
end
#=end

cmd='convert -compress BZip -delay 20 -dispose None n'
cmd+=" -page 240x320+0+0 gradiant.gif n"
for i in 1..18 do
cmd+=" -page +0+0 OpenTwin_#{i_to_s(i)}.gif n"
end
cmd+=" -loop 1 OpenTwin_anim.gif "
`#{cmd}`
------------------------------------------------------------------------

> ou une alternative (sur GraphicConverter cela ne me semble pas
> modifiable pour du gif)

Rien compris.

Finalement on a une anim en gif ?
Donc, normalement, et à mon idée, toutes les images intermédiaires sont
en gif.



ben oui, j'ai remarqué, qu'avec ImageMagick si je crée les images
intermédiares en png puis les converti en gif après l'image est de bien
meilleure qualité qu'en procédant directement en gif (notamment l'hombre
sous le texte)

Yapuka tenter GifBuilder.
Ou peut-être GC
- menu : Image / Couleur / Optimiser la palette
- ré-enregistrer l'bazar avec l'option : minimiser les couleurs




oui, bien sûr j'ai essayé ça...

Ou tout revoir à la manu : supprimer dans chaque image intermédiaire
tout ce qui n'est pas nouveau par rapport à la précédente.



ouais c'est une option, en fait, dans mon cas, je pourrais me contenter
de deux images :
le fond et le texte, seul le texte change en se déplaçant sur le fond...

Sur <http://www.versiontracker.com>
avec search : gif
je vois qques softs pour animations
mais pas d'ImageMagick



ImageMagick s'installe avec MacPorts (ou Fink) ou à la manu par
compilation

c'est un logiciel très puissant...

--
Une Bévue
Avatar
unbewusst.sein
Thierry B. wrote:

> Ha! ben! bravo! belle réussite :-)

Je pense que convert enchaine les différentes trames à la suite
les unes des autres, alors que des logiciels plus élaborés cherchent
dans chaque image la plus petite zone rectangulaire qui a changée
et ne met que celle-ci (avec ses coordonnées) dans le fichier
résultant. Donc, si seule une petite partie de l'image est
censée clignoter, le résultat en taille sera bien plus faible.

Et si quelqu'un connait un bon outil pour faire des gifs animées
sous Unix, qu'il parle maintenant ou se taise à jamais...



;-)

--
Une Bévue
Avatar
Thierry B.
--{ Une Bévue a plopé ceci: }--


c'est un logiciel très puissant...




Mais pas pour les gifs animées :(


--
Il y en a quand même bien un ou deux de corrects dans le lot, jusqu'à preuve du
contraire. Michel Rocard par exemple. Par contre, je n'arrive pas à en trouver
un second là tout de suite maintenant.
--{ Cooker, in DaLFP }--
Avatar
Mickaël Wolff
Thierry B. a écrit :

Et si quelqu'un connait un bon outil pour faire des gifs animées
sous Unix, qu'il parle maintenant ou se taise à jamais...



The Gimp ?

--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
Avatar
unbewusst.sein
Mickaël Wolff wrote:


The Gimp ?



Connais-tu un tuto avec the gimp et gif animé ?

--
Une Bévue
Avatar
SAM
Une Bévue a écrit :
Mickaël Wolff wrote:

The Gimp ?



Connais-tu un tuto avec the gimp et gif animé ?



ça m'étonnerait que tu arrives à faire bp moins que ce que tu as déjà
comme gif animé.
Le "lourd" doit être le texte bluré.

En tous cas il ne faut pas créer d'images transitonnelles
supplémentaires, il faut que tu "travailles" sur des images fantômes
de l'image de texte complète et te contenter de les déplacer (une a une)

J'ai comme l'impression que pour chaque image de l'animation tu demandes
à IM de recréer (compressée BZip ?!) l'image de texte et de la croper
pour qu'elle ne déborde pas.
Le cropage, je ne suis pas certain qu'il faille le faire sur chaque image.
Ce doit être la taille définie de l'image définitive qui assure le
cropage de tout le reste à cette taille.


--
sm
Avatar
Thierry B.
--{ Mickaël Wolff a plopé ceci: }--

Et si quelqu'un connait un bon outil pour faire des gifs animées
sous Unix, qu'il parle maintenant ou se taise à jamais...



The Gimp ?



Mmmm, d'après les essais de mon fils, c'est pas vraiment ça
non plus, je pense. Mais je suis un peu (après la sieste) sur
le truc, et j'ai déja trouvé quelques pistes.

En fait, je vais essayer de coder un machin qui exploite à
fond la notion de "zone modifiée" pour optimiser la taille
des fichiers. C'est pas simple, mais faisable, et probablement
déja fait. Merci Unisys, grâce à toi, c'est dur de trouver de
la bonne doc sur les Gifs.


--
"Low cost, stand-alone, easy to use". The trigone of computing.
Avatar
unbewusst.sein
SAM wrote:

ça m'étonnerait que tu arrives à faire bp moins que ce que tu as déjà
comme gif animé.
Le "lourd" doit être le texte bluré.



sans doute ...

En tous cas il ne faut pas créer d'images transitonnelles
supplémentaires, il faut que tu "travailles" sur des images fantômes
de l'image de texte complète et te contenter de les déplacer (une a une)



ou n'en avoir qu'une et changer sa position à chaque frame ?

J'ai comme l'impression que pour chaque image de l'animation tu demandes
à IM de recréer (compressée BZip ?!) l'image de texte et de la croper
pour qu'elle ne déborde pas.



ouais, possible

Le cropage, je ne suis pas certain qu'il faille le faire sur chaque image.
Ce doit être la taille définie de l'image définitive qui assure le
cropage de tout le reste à cette taille.



ben, ce qui est certain et que je n'ai pas la bonne méthose !

je viens de faire du reverse engeenering sur l'image que je voudrais
remplacer.

avec ImageMagick on peut copier chaque frame dans une image à part, par
ex, en ruby ;-) ça donne :

------------------------------------------------------------------------
#! /usr/bin/env ruby

def i_to_s(i)
return i.to_s unless i<10
return "0"+i.to_s
end

for i in 0..18 do
`convert "start.gif[#{i}]" start_frames/start_#{i_to_s(i)}.gif`
end
------------------------------------------------------------------------

donc, le script prend l'image originale "start.gif" et en extrait la
frame 0 :

`convert "start.gif[0] start_frames/start_00.gif`

et ainsi de suite jusqu'à la 19ième, ce qui me donne :

~/Documents/home/Twin-Tact%> ls -al start.gif
-rwxr-xr-x 1 yt yt 26451 17 jul 14:39 start.gif #
compression 1:3
~/Documents/home/Twin-Tact%> ls -al start_frames/*.gif
-rw-r--r-- 1 yt yt 3205 18 jul 17:46 start_frames/start_00.gif #
compression 1:48
-rw-r--r-- 1 yt yt 3255 18 jul 17:46 start_frames/start_01.gif
-rw-r--r-- 1 yt yt 1957 18 jul 17:46 start_frames/start_02.gif
-rw-r--r-- 1 yt yt 3083 18 jul 17:46 start_frames/start_03.gif
-rw-r--r-- 1 yt yt 2693 18 jul 17:46 start_frames/start_04.gif
-rw-r--r-- 1 yt yt 1677 18 jul 17:46 start_frames/start_05.gif
-rw-r--r-- 1 yt yt 2170 18 jul 17:46 start_frames/start_06.gif
-rw-r--r-- 1 yt yt 3114 18 jul 17:46 start_frames/start_07.gif
-rw-r--r-- 1 yt yt 2220 18 jul 17:46 start_frames/start_08.gif
-rw-r--r-- 1 yt yt 2421 18 jul 17:46 start_frames/start_09.gif
-rw-r--r-- 1 yt yt 1265 18 jul 17:46 start_frames/start_10.gif
-rw-r--r-- 1 yt yt 1265 18 jul 17:46 start_frames/start_11.gif
-rw-r--r-- 1 yt yt 1505 18 jul 17:46 start_frames/start_12.gif
-rw-r--r-- 1 yt yt 1505 18 jul 17:46 start_frames/start_13.gif
-rw-r--r-- 1 yt yt 1704 18 jul 17:46 start_frames/start_14.gif
-rw-r--r-- 1 yt yt 1704 18 jul 17:46 start_frames/start_15.gif
-rw-r--r-- 1 yt yt 1887 18 jul 17:46 start_frames/start_16.gif
-rw-r--r-- 1 yt yt 1887 18 jul 17:46 start_frames/start_17.gif
-rw-r--r-- 1 yt yt 1991 18 jul 17:46 start_frames/start_18.gif


en résumé l'image animée résultante "start.gif" a un facteur de
compression de 1:3 (dixit GC) et toutes les images de frame un facteur
de compression de 1:48 elles font de 1.2ko à 3.2 ko.

et franchement chacune des images est impeccable !!!

par contre la mémoire utilisée dans ce cas est de 80ko + 1.5mo
dans mon cas j'ai 80ko + 350 ko pour une image de 68ko.

finalement c'est loin d'être facile de faire un gif animé qui soit
chouette et occupe peu de ram...

bon je viens de re-re-télécharger GifBuilder...

mon DD interne est en train de mourir...

--
Une Bévue
1 2