aboutsummaryrefslogtreecommitdiff
path: root/files/fr/images_png_animées/index.html
blob: 1f7837758110111464269e9af47ebd68f3cc774e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
---
title: Images PNG animées
slug: Images_PNG_animées
tags:
  - Firefox 3
translation_of: Mozilla/Tech/APNG
---
<p></p>

<h3 id="Auteurs" name="Auteurs">Auteurs</h3>

<p>La spécification APNG a été rédigée par :</p>

<ul>
 <li>Stuart Parmenter &lt;<a class="link-mailto" href="mailto:pavlov@pavlov.net" rel="freelink">pavlov@pavlov.net</a>&gt;</li>
 <li>Vladimir Vukicevic &lt;<a class="link-mailto" href="mailto:vladimir@pobox.com" rel="freelink">vladimir@pobox.com</a>&gt;</li>
 <li>Andrew Smith &lt;<a class="link-mailto" href="mailto:asmith15@littlesvr.ca" rel="freelink">asmith15@littlesvr.ca</a>&gt;</li>
</ul>

<h3 id="Aper.C3.A7u" name="Aper.C3.A7u">Aperçu</h3>

<p>APNG est une extension du format <a class="external" href="http://www.w3.org/TR/PNG/">Portable Network Graphics</a> (PNG), qui ajoute la gestion des images animées. Elle est prévue pour remplacer les images animées simples qui utilisaient traditionnellement le format <a class="external" href="http://www.w3.org/Graphics/GIF/spec-gif89a.txt">GIF</a>, tout en ajoutant la gestion des images 24-bits et la transparence 8-bits. APNG est une alternative plus simple à MNG, fournissant une spécification pour la plupart des utilisations d'images animées sur Internet.</p>

<p>APNG est rétrocompatible avec PNG ; tout décodeur PNG devrait être capable d'ignorer les bouts d'informations spécifiques à APNG et d'afficher une image statique.</p>

<h4 id="Terminologie" name="Terminologie">Terminologie</h4>

<p>L'<strong>image par défaut</strong> est l'image décrite par les blocs standards « IDAT », et est l'image qui sera affichée par les décodeurs ne gérant pas APNG.</p>

<p>Le <strong>canevas</strong> est la zone sur le dispositif de sortie où les trames doivent être affichées. Le contenu du canevas n'est pas nécessairement accessible au décodeur. Selon la spécification PNG, si un bloc « bKGD » existe il peut être utilisé pour remplir le canevas si aucun autre fond préférable n'existe.</p>

<p>Le <strong>tampon de sortie</strong> est un tableau de pixels dont les dimensions sont définies par les paramètres <em>width</em> et<em> height</em> du bloc « IHDR » du fichier PNG. Conceptuellement, chaque trame est construite dans le tampon de sortie avant d'être retranscrite sur le canevas. Le contenu du tampon de sortie est accessible par le décodeur. Les angles du canevas correspondent à ceux du tampon de sortie.</p>

<p><strong>Noir totalement transparent</strong> signifie que les composantes rouge, verte, bleue et alpha sont toutes mises à zéro.</p>

<p>Dans les descriptions de blocs, une valeur <code><strong>unsigned int</strong></code> sera un entier non signé sur 32 bits dont les octets sont dans l'ordre du réseau, limité à l'intervalle 0 à (2^31)-1 ; une valeur <code><strong>unsigned short</strong></code> sera un entier non signé sur 16 bits dont les octets sont dans l'ordre du réseau, limité à l'intervalle 0 à (2^16)-1 ; et une valeur <code><strong>byte</strong></code> sera un entier non signé sur 8 bits dans l'intervalle 0 à (2^8)-1.</p>

<h4 id="Gestion_d.27erreurs" name="Gestion_d.27erreurs">Gestion d'erreurs</h4>

<p>APNG est conçu pour permettre l'affichage incrémental de trames avant que l'image entière ait été lue. Ceci implique que certaines erreurs peuvent ne pas être détectées avant le démarrage partiel de l'animation. Dès qu'une erreur est rencontrée, il est vivement recommandé que les décodeurs suppriment les trames qui suivent, arrêtent l'animation et reviennent à l'affichage de l'image par défaut. Un décodeur qui détecte une erreur avant que l'animation ne démarre doit afficher directement l'image par défaut. Un message d'erreur peut être affiché pour l'utilisateur si nécessaire.</p>

<h3 id="Structure" name="Structure">Structure</h3>

<p>Un flux APNG est un flux PNG normal tel que défini dans la <a class="external" href="http://www.w3.org/TR/PNG/">spécification PNG</a>, avec trois types de blocs supplémentaires décrivant l'animation et contenant les données des trames supplémentaires.</p>

<p>Pour qu'il soit reconnu comme APNG, un bloc « acTL » doit apparaître dans le flux avant tout bloc « IDAT ». La structure « acTL » est décrite plus bas.</p>

<p>Conceptuellement, au début de chaque exécution, le buffer de sortie doit être complètement initialisé à un rectangle noir totalement transparent, avec les dimensions renseignées dans le bloc « IHDR ».</p>

<p>L'image par défaut peut être définie comme la première trame de l'animation par la présence d'un unique bloc « fcTL » avant « IDAT ». Si ce n'est pas le cas, l'image par défaut ne fera pas partie de l'animation.</p>

<p>Les trames suivantes sont encodées dans des blocs « fdAT », qui ont la même structure que les blocs « IDAT » mais précédés d'un numéro de séquence. Les informations de positionnement et d'affichage pour chaque trame sont stockées dans des blocs « fcTL ». La structure complète des blocs « fdAT » et « fcTL » est décrite ci-dessous.</p>

<p>Les limites de l'ensemble de l'animation sont spécifiées par les paramètres <em>width</em> et<em> height</em> du bloc PNG « IHDR », que l'image par défaut fasse partie ou non de l'animation. L'image par défaut doit être complétée par des pixels complètement transparents si de l'espace supplémentaire est nécessaire pour les trames suivantes.</p>

<p>Chaque trame est identique à chaque exécution, les applications ne doivent donc pas hésiter à mettre les trames en cache.</p>

<h3 id="Num.C3.A9ros_de_s.C3.A9quence_des_blocs" name="Num.C3.A9ros_de_s.C3.A9quence_des_blocs">Numéros de séquence des blocs</h3>

<p>Les blocs « fcTL » et « fdAT » ont un numéro de séquence de 4 octets. Les deux types de blocs partagent la même séquence. Le rôle de ce nombre est de permettre de détecter (et éventuellement corriger) les erreurs de séquence dans un PNG animé, car la spécification PNG n'impose pas d'ordre particulier pour les blocs auxiliaires.</p>

<p>Le premier bloc « fcTL » doit contenir le numéro de séquence 0, et les numéros de séquence dans les autres blocs « fcTL » et « fdAT » doivent être dans l'ordre, sans trous ni doublons.</p>

<p>Le tableau ci-dessous illustre l'utilisation des numéros de séquence pour les images avec plus d'une trame et plus d'un bloc « fdAT ».</p>

<p><strong>Si l'image par défaut est la première trame :</strong></p>

<table class="standard-table">
 <tbody>
  <tr>
   <th>Numéro de séquence</th>
   <th>Bloc</th>
  </tr>
  <tr>
   <td>(aucun)</td>
   <td>« acTL »</td>
  </tr>
  <tr>
   <td>0</td>
   <td>« fcTL » (première trame)</td>
  </tr>
  <tr>
   <td>(aucun)</td>
   <td>« IDAT » (première trame — utilisée comme image par défaut)</td>
  </tr>
  <tr>
   <td>1</td>
   <td>« fcTL » (deuxième trame)</td>
  </tr>
  <tr>
   <td>2</td>
   <td>« fdAT » (premier « fDAT » pour la deuxième trame)</td>
  </tr>
  <tr>
   <td>3</td>
   <td>« fdAT » (deuxième « fDAT » pour la deuxième trame)</td>
  </tr>
  <tr>
   <td></td>
   <td></td>
  </tr>
 </tbody>
</table>

<p><strong>Si l'image par défaut ne fait pas partie de l'animation :</strong></p>

<table class="standard-table">
 <tbody>
  <tr>
   <th>Numéro de séquence</th>
   <th>Bloc</th>
  </tr>
  <tr>
   <td>(aucun)</td>
   <td>« acTL »</td>
  </tr>
  <tr>
   <td>(aucun)</td>
   <td>« IDAT » (image par défaut)</td>
  </tr>
  <tr>
   <td>0</td>
   <td>« fcTL » (première trame)</td>
  </tr>
  <tr>
   <td>1</td>
   <td>Premier « fdAT » pour la première trame</td>
  </tr>
  <tr>
   <td>2</td>
   <td>Deuxième « fDAT » pour la première trame</td>
  </tr>
  <tr>
   <td></td>
   <td></td>
  </tr>
 </tbody>
</table>

<p>Les décodeurs doivent traiter des blocs APNG désordonnés comme une erreur. Les éditeurs connaissant le format APNG devraient les restaurer dans l'ordre correct à l'aide des numéros de séquence.</p>

<h3 id=".C2.AB_acTL_.C2.BB_:_le_bloc_de_contr.C3.B4le_de_l.27animation" name=".C2.AB_acTL_.C2.BB_:_le_bloc_de_contr.C3.B4le_de_l.27animation">« acTL » : le bloc de contrôle de l'animation</h3>

<p>Le bloc « acTL » est un bloc auxiliaire tel que défini dans la spécification PNG (<em>ancillary chunk</em>). Il doit apparaître avant le premier bloc « IDAT » dans un flux PNG valide.</p>

<p>Le bloc « acTL » contient :</p>

<table class="standard-table">
 <tbody>
  <tr>
   <th>Décalage d'octets</th>
   <th>Nom du champ</th>
   <th>Type de champ</th>
   <th>Description</th>
  </tr>
  <tr>
   <td>0</td>
   <td><code>num_frames</code></td>
   <td><code>unsigned int</code></td>
   <td>Le nombre de trames dans l'APNG.</td>
  </tr>
  <tr>
   <td>4</td>
   <td><code>num_plays</code></td>
   <td><code>unsigned int</code></td>
   <td>Le nombre de fois que l'animation doit être répétée. 0 indique une répétition infinie.</td>
  </tr>
 </tbody>
</table>

<p><code>num_frames</code> indique le nombre total de trames dans l'animation. Ce nombre doit être identique au nombre de blocs « fcTL ». 0 n'est pas une valeur acceptable. 1 est valide pour un APNG d'une seule trame. Si cette valeur n'est pas identique au nombre de trames, il convient de traiter ceci comme une erreur.</p>

<p><code>num_plays</code> indique le nombre de fois où l'animation doit être jouée ; si c'est 0, l'animation doit jouer indéfiniment. Si la valeur est supérieure à zéro, l'animation doit s'arrêter sur la dernière trame à la fin de la dernière exécution.</p>

<h3 id=".C2.AB_fcTL_.C2.BB_:_le_bloc_de_contr.C3.B4le_de_trame" name=".C2.AB_fcTL_.C2.BB_:_le_bloc_de_contr.C3.B4le_de_trame">« fcTL » : le bloc de contrôle de trame</h3>

<p>Le bloc « fcTL » est un bloc auxiliaire tel que défini dans la spécification PNG (<em>ancillary chunk</em>). Il doit apparaître avant les blocs « IDAT » ou « fdAT » de la trame à laquelle il s'applique. En particulier :</p>

<ul>
 <li>Pour l'image par défaut, si un bloc « fcTL » est présent il doit apparaître avant le premier bloc « IDAT ». Sa position relative au bloc « acTL » n'est pas spécifiée.</li>
 <li>Pour la première trame qui n'est pas l'image par défaut (il peut donc s'agir de la première ou de la deuxième trame), le bloc « fcTL » doit apparaître après tous les blocs « IDAT » et avant les blocs « fdAT » pour la trame.</li>
 <li>Pour toutes les trames suivantes, le bloc « fcTL » de la trame N doit apparaître après les blocs « fdAT » de la trame N-1 et avant les blocs « fdAT » de la trame N.</li>
 <li>D'autres blocs auxiliaires peuvent apparaître entre les blocs APNG, même entre des blocs « fdAT ».</li>
</ul>

<p>Exactement un bloc « fcTL » est nécessaire pour chaque trame.</p>

<table class="standard-table">
 <tbody>
  <tr>
   <th>Décalage d'octets</th>
   <th>Nom du champ</th>
   <th>Type de champ</th>
   <th>Description</th>
  </tr>
  <tr>
   <td>0</td>
   <td><code>sequence_number</code></td>
   <td><code>unsigned int</code></td>
   <td>Numéro de séquence du bloc d'animation, commençant à 0.</td>
  </tr>
  <tr>
   <td>4</td>
   <td><code>width</code></td>
   <td><code>unsigned int</code></td>
   <td>Largeur de la trame suivante.</td>
  </tr>
  <tr>
   <td>8</td>
   <td><code>height</code></td>
   <td><code>unsigned int</code></td>
   <td>Hauteur de la trame suivante.</td>
  </tr>
  <tr>
   <td>12</td>
   <td><code>x_offset</code></td>
   <td><code>unsigned int</code></td>
   <td>Position X à laquelle afficher la trame suivante.</td>
  </tr>
  <tr>
   <td>16</td>
   <td><code>y_offset</code></td>
   <td><code>unsigned int</code></td>
   <td>Position Y à laquelle afficher la trame suivante.</td>
  </tr>
  <tr>
   <td>20</td>
   <td><code>delay_num</code></td>
   <td><code>unsigned short</code></td>
   <td>Numérateur de la fraction de délai de trame.</td>
  </tr>
  <tr>
   <td>22</td>
   <td><code>delay_den</code></td>
   <td><code>unsigned short</code></td>
   <td>Dénominateur de la fraction de délai de trame.</td>
  </tr>
  <tr>
   <td>24</td>
   <td><code>dispose_op</code></td>
   <td><code>byte</code></td>
   <td>Type de nettoyage de la zone de trame après qu'elle a été rendue.</td>
  </tr>
  <tr>
   <td>25</td>
   <td><code>blend_op</code></td>
   <td><code>byte</code></td>
   <td>Type de rendu de la zone de trame pour cette trame.</td>
  </tr>
 </tbody>
</table>

<p>La trame doit être rendue à l'intérieur de la région définie par <code>x_offset</code>, <code>y_offset</code>, <code>width</code> et <code>height</code>. Les décalages et les dimensions doivent être positifs et les régions ne peuvent pas s'étendre en dehors de l'image par défaut.</p>

<p>Contraintes sur les régions de trame :</p>

<ul>
 <li><code>x_offset</code> &gt;= 0</li>
 <li><code>y_offset</code> &gt;= 0</li>
 <li><code>width</code> &gt; 0</li>
 <li><code>height</code> &gt; 0</li>
 <li><code>x_offset</code> + <code>width</code> &lt;= 'IHDR' width</li>
 <li><code>y_offset</code> + <code>height</code> &lt;= 'IHDR' height</li>
</ul>

<p>Les paramètres <code>delay_num</code> et <code>delay_den</code> forment une fraction indiquant le temps d'affichage de la trame courante, en secondes. Si le dénominateur vaut 0, il sera traité comme s'il valait 100 (c'est-à-dire que <code>delay_num</code> spécifie alors 1/100e de seconde). Si la valeur du numérateur est 0, le décodeur devrait afficher la trame suivante aussi rapidement que possible, même si une limite inférieure raisonnable peut être définie.</p>

<p>Les intervalles de temps devraient être indépendants du temps nécessaire pour décoder et afficher chaque trame, afin que les animations soient exécutées à la même vitesse quelles que soient les performances de l'implémentation du décodeur.</p>

<p><code>dispose_op</code> spécifie la manière de changer le tampon de sortie à la fin du délai (avant l'affichage de la trame suivante).</p>

<p>Les valeurs acceptables pour <code>dispose_op</code> sont :</p>

<table class="standard-table">
 <tbody>
  <tr>
   <th>Valeur</th>
   <th>Constante</th>
   <th>Description</th>
  </tr>
  <tr>
   <td>0</td>
   <td><code>APNG_DISPOSE_OP_NONE</code></td>
   <td>Aucun nettoyage n'est fait sur cette trame avant d'afficher la suivante ; le contenu du tampon de sortie est laissé tel quel.</td>
  </tr>
  <tr>
   <td>1</td>
   <td><code>APNG_DISPOSE_OP_BACKGROUND</code></td>
   <td>La région de la trame dans le tampon de sortie est rempli de noir totalement transparent avant d'afficher la trame suivante.</td>
  </tr>
  <tr>
   <td>2</td>
   <td><code>APNG_DISPOSE_OP_PREVIOUS</code></td>
   <td>La région de la trame dans le tampon de sortie est réinitialisée au contenu précédent avant d'afficher la trame suivante.</td>
  </tr>
 </tbody>
</table>

<p>Si le premier bloc « fcTL » utilise une valeur <code>dispose_op</code> de <code>APNG_DISPOSE_OP_PREVIOUS</code>, elle devrait être traitée comme<code>APNG_DISPOSE_OP_BACKGROUND</code>.</p>

<p><code>blend_op</code> indique si la trame doit être mélangée avec le contenu actuel du tampon de sortie suivant les canaux alpha, ou si elle doit remplacer complètement sa région sur le tampon de sortie.</p>

<p>Les valeurs acceptables pour <code>blend_op</code> sont :</p>

<table class="standard-table">
 <tbody>
  <tr>
   <th>Valeur</th>
   <th>Constante</th>
   <th>Description</th>
  </tr>
  <tr>
   <td>0</td>
   <td><code>APNG_BLEND_OP_SOURCE</code></td>
   <td>Toutes les composantes de couleur de la trame, y compris le canal alpha, écrasent le contenu actuel de la région de la trame sur le tampon de sortie.</td>
  </tr>
  <tr>
   <td>1</td>
   <td><code>APNG_BLEND_OP_OVER</code></td>
   <td>La trame doit être composée sur le tampon de sortie selon son canal alpha, à l'aide d'une opération OVER simple telle que définie dans la section <a class="external" href="http://pmt.sourceforge.net/specs/png-1.2-pdg.html#D.Alpha-channel-processing">Alpha Channel Processing</a> de la spécification <a class="external" href="http://pmt.sourceforge.net/specs/png-1.2-pdg.html">Extensions to the PNG Specification, Version 1.2.0</a>. Notez que la deuxième variation de l'exemple de code est applicable.</td>
  </tr>
 </tbody>
</table>

<p>Notez que pour la première trame, les deux modes sont fonctionnellement équivalents puisque le tampon de sortie est vidé au début de chaque exécution.</p>

<p>Le bloc « fcTL » correspondant à l'image par défaut, si elle existe, a les restrictions suivantes :</p>

<ul>
 <li>Les champs <code>x_offset</code> et <code>y_offset</code> doivent être à 0.</li>
 <li>Les champs <code>width</code> et <code>height</code> doivent être égaux aux champs correspondants dans le bloc « IHDR ».</li>
</ul>

<p>Comme noté précédemment, le tampon de sortie doit être complètement initialisé en noir totalement transparent au début de chaque exécution. Ceci permet de s'assurer que chaque exécution de l'animation sera identique. Les décodeurs peuvent éviter cette étape explicite de nettoyage à condition qu'un résultat identique soit garanti. Par exemple, si l'image par défaut fait partie de l'animation, et utilise une valeur <code>blend_op</code> de <code>APNG_BLEND_OP_SOURCE</code>, le nettoyage n'est pas nécessaire puisque tout le tampon de sortie sera écrasé.</p>

<h3 id=".C2.AB_fdAT_.C2.BB_:_le_bloc_de_donn.C3.A9es_de_trame" name=".C2.AB_fdAT_.C2.BB_:_le_bloc_de_donn.C3.A9es_de_trame">« fdAT » : le bloc de données de trame</h3>

<p>Le bloc « fdAT » a la même fonction qu'un bloc « IDAT ». Il en a également la même structure, sauf qu'il est précédé d'un numéro de séquence.</p>

<p>Au moins un bloc « fdAT » est nécessaire pour chaque trame. Le flux de données compressé est alors la concaténation du contenu des champs de données de tous les blocs « fdAT » d'une trame. Lorsqu'il est décompressé, le flux de données est constitué des données complètes des pixels d'une image PNG, incluant l'octet de filtre au début de chaque ligne de parcours, comme dans les données décompressées de tous les blocs « IDAT ». Il utilise les mêmes profondeurs d'octets, type de couleur, méthode de compression, méthode de filtre, méthode d'interlaçage et palette (si applicable) que l'image par défaut.</p>

<table class="standard-table">
 <tbody>
  <tr>
   <th>Décalage d'octets</th>
   <th>Nom du champ</th>
   <th>Type de champ</th>
   <th>Description</th>
  </tr>
  <tr>
   <td>0</td>
   <td><code>sequence_number</code></td>
   <td><code>unsigned int</code></td>
   <td>Numéro de séquence du bloc d'animation, à partir de 0.</td>
  </tr>
  <tr>
   <td>4</td>
   <td><code>frame_data</code></td>
   <td>X <code>bytes</code></td>
   <td>Données de trame pour cette trame.</td>
  </tr>
 </tbody>
</table>

<p>Chaque trame hérite de toutes les propriétés spécifiées par tout bloc critique ou auxiliaire avant le premier « IDAT » du fichier, sauf la hauteur et la largeur, qui viennent du bloc « fcTL ».</p>

<p>Si le bloc PNG « pHYs » est présent, les images APNG et leurs valeurs <code>x_offset</code> et <code>y_offset</code> doivent être dimensionnées de la même manière que l'image principale. Conceptuellement, un tel dimensionnement se produit lors de la transposition du tampon de sortie vers le canevas.</p>

<h3 id="R.C3.A9visions_de_cette_sp.C3.A9cification" name="R.C3.A9visions_de_cette_sp.C3.A9cification">Révisions de cette spécification</h3>

<h4 id="Depuis_0.1" name="Depuis_0.1">Depuis 0.1</h4>

<ul>
 <li>Renommage des blocs en « anIm » et « frAm » pour appliquer les conventions de nommage des blocs PNG</li>
</ul>

<ul>
 <li>Ajout d'une explication plus détaillée de la structure APNG dans la Section 2.</li>
</ul>

<ul>
 <li>Ajout d'informations pour l'interaction du PNG avec d'autres blocs dans la section 3.2.</li>
</ul>

<ul>
 <li>Changement des décalages et délais des blocs « frAm » en des entiers signés.</li>
</ul>

<h4 id="Depuis_0.2" name="Depuis_0.2">Depuis 0.2</h4>

<ul>
 <li>Changement du bloc « frAm » en « afRa » pour éviter les conflits avec le bloc MNG « FRAM ».</li>
</ul>

<ul>
 <li>Changement du format : au lieu de séquences de IHDR..IDAT..IEND, les trames autres que la trame 0 sont stockées dans des blocs « afRa ».</li>
</ul>

<ul>
 <li>Ajout de <code>start_frame</code> à « anIm » pour indiquer la trame sur laquelle l'animation doit commencer.</li>
</ul>

<ul>
 <li>Retrait de <code>num_frames</code> du bloc « anIm »</li>
</ul>

<h4 id="Depuis_0.3" name="Depuis_0.3">Depuis 0.3</h4>

<ul>
 <li>Ajout des descriptions des blocs « aCTL », « fdAT » et « fcTL » d'après les dernières discussions sur png-list</li>
</ul>

<ul>
 <li>Ajout de la section 4, « Interactions avec d'autres blocs PNG » ; description des palettes globales et locales et de la transparence</li>
</ul>

<ul>
 <li>Changement de la section sur le bloc « oFFs » pour faire référence à des blocs plus généraux</li>
</ul>

<ul>
 <li>Mise à jour de la description d'« aDAT » pour indiquer que toutes les trames doivent soit être dans un seul bloc, ou que le premier bloc doit être vide.</li>
</ul>

<ul>
 <li>Ajout d'un avertissement sur le fait que toute région de trame (x,y,width,height) doit se trouver complètement dans le canevas du PNG parent</li>
</ul>

<ul>
 <li>Correction de la description de <code>dispose_op</code> (après, pas avant)</li>
</ul>

<ul>
 <li>Changement de <code>dispose_op</code> et <code>render_op</code> ; ajout d'une description de l'étape de nettoyage, ajout du flag <code>BLEND</code></li>
</ul>

<ul>
 <li>Changement de <code>delay_time</code> en un numérateur et un dénominateur, pour spécifier des délais qui ne forment pas des nombres entiers de millisecondes.</li>
</ul>

<ul>
 <li>Ajout d'une note pour clarifier que l'animation de palettes n'est pas gérée.</li>
</ul>

<ul>
 <li>Retrait de <code>start_frame</code> d'aCTL ; obligation de fcTL pour la trame 0 ; ajout du flag <code>SKIP_FRAME</code> à fCTL.</li>
</ul>

<h4 id="Depuis_0.4" name="Depuis_0.4">Depuis 0.4</h4>

<ul>
 <li>Réintroduction de <code>num_frames</code> dans aCTL</li>
</ul>

<ul>
 <li>Déplacement de <code>sequence_number</code> depuis aDAT vers fCTL</li>
</ul>

<ul>
 <li>Modification du contenu de aDAT en fCTL+IDATs+fEND</li>
</ul>

<ul>
 <li>Ajout de clarifications sur ce qui est permis ou non</li>
</ul>

<ul>
 <li>Renommage d'aCTL en acTL, fCTL en fcTL, aDAT en fdAT et fEND en feND pour appliquer les conventions de nommage des blocs PNG</li>
</ul>

<h4 id="Depuis_0.5" name="Depuis_0.5">Depuis 0.5</h4>

<ul>
 <li>Ajout des CRC IHDR et PLTE au bloc acTl</li>
</ul>

<ul>
 <li>Les acTL fcTL et adAT sont résistants à la copie, et ont été renommés en acTl, fcTl et adAt</li>
</ul>

<h4 id="Depuis_0.6" name="Depuis_0.6">Depuis 0.6</h4>

<ul>
 <li>Le bloc fdAt n'est plus un conteneur d'autres blocs, mais plutôt un remplaçant de bloc IDAT</li>
</ul>

<ul>
 <li>Retrait du bloc feND</li>
</ul>

<ul>
 <li>Ajout d'un champ de numéro de séquence à fdAt</li>
</ul>

<ul>
 <li>Reintroduction des champs <code>width</code> et <code>height</code> dans fcTl</li>
</ul>

<h4 id="Depuis_0.7" name="Depuis_0.7">Depuis 0.7</h4>

<ul>
 <li>Retrait du flag <code>hidden</code>, à la place la première trame peut être masquée lorsqu'un fcTl manquant le signale</li>
</ul>

<ul>
 <li>IDAT, fcTl et fdAt peuvent à présent être séparés par d'autre blocs</li>
</ul>

<h4 id="Depuis_0.8" name="Depuis_0.8">Depuis 0.8</h4>

<ul>
 <li>Retrait des CRC pour IHDR et PLTE d'acTl</li>
</ul>

<ul>
 <li>Les acTL fcTL et adAT sont à présent résistants à la copie, et sont renommés en acTL, fcTL and adAT</li>
</ul>

<h4 id="Depuis_0.9" name="Depuis_0.9">Depuis 0.9</h4>

<ul>
 <li>Séparation de <code>render_op</code> en <code>dispose_op</code> et <code>blend_op</code></li>
</ul>

<h4 id="Depuis_0.10" name="Depuis_0.10">Depuis 0.10</h4>

<ul>
 <li>Aucun changement</li>
</ul>

<h3 id="Encodeur_de_test_et_exemples_d.27images" name="Encodeur_de_test_et_exemples_d.27images">Encodeur de test et exemples d'images</h3>

<p>Des exemples d'images sont disponibles sur la page de l'implémentation d'APNG à l'adresse <a class="external" href="http://littlesvr.ca/apng/" rel="freelink">http://littlesvr.ca/apng/</a></p>

<p>Un encodeur (open source) est disponible dans les versions du moteur Gecko à partir de la version 1.9 alpha 4.</p>

<p>Une application (open source) utilisant l'encodeur de Mozilla pour assembler des APNG est disponible à l'adresse <a class="external" href="http://littlesvr.ca/apng/apngedit.html" rel="freelink">http://littlesvr.ca/apng/apngedit.html</a></p>

<h3 id="Voir_.C3.A9galement" name="Voir_.C3.A9galement">Voir également</h3>

<ul>
 <li><a class="external" href="http://www.w3.org/TR/PNG/">Portable Network Graphics (PNG) Specification (Second Edition)</a></li>
 <li><a class="external" href="http://pmt.sourceforge.net/specs/png-1.2-pdg.html">Extensions to the PNG Specification, Version 1.2.0</a></li>
 <li><a class="external" href="http://www.w3.org/Graphics/GIF/spec-gif89a.txt">Graphics Interchange Format 89a</a></li>
</ul>