67 votes

Plus petite taille de fichier pour une image transparente d'un pixel

Je suis à la recherche pour le plus petit (en termes de taille de fichier) transparent de 1 pixel de l'image.

Actuellement, j'ai un gif de 49 octets qui semble être le plus populaire.

Mais je me souviens il y a plusieurs années en avoir une qui était de moins de 40 octets. Pourrait avoir été de 32 octets.

Quelqu'un peut-il faire mieux? Graphiques format n'est pas un problème tant que les navigateurs web modernes pouvez l'afficher et le respect de la transparence.

Mise à JOUR: OK, j'ai trouvé un 42 octets transparent pixel gif: http://bignosebird.com/docs/h3.shtml

UPDATE2: Ressemble à rien de moins que 43 octets peuvent être instable dans certains clients. Peut pas avoir que.

85voto

bryc Points 536

La plus petite possible GIF dépend entièrement de la mise en œuvre de la GIF standard. La plupart des navigateurs web sont indulgents quand il s'agit de décoder des fichiers GIF. Quand vous voyez un "petit" GIF sur le net, il peut rendre complètement fine transparent ou blanc/noir dans un navigateur, mais ne sera pas ouvert dans un logiciel comme Gimp, Paint et Photoshop, et est cassée dans la vue des miniatures. De même, un piraté GIF transparent en Chrome peut parfois s'afficher de manière incorrecte dans IE ou Firefox.

Le plus petit de proximité valide GIF est de 32 octets (40 si transparent). "À peu près valide", parce que la bande-annonce et quelques de la, LZW, les données peuvent être ignorées, et il faudra encore travailler dans pratiquement tous les logiciels.

La nécessaire octets comme suit:

  1. La signature des fichiers/la version, 6 octets
  2. Logique de l'Écran du Descripteur, 7 octets
  3. Mondial de la Table des Couleurs, 6 octets
  4. En option: Contrôle de Graphismes Extension, 8 bytes1
  5. Image Descripteur de 10 octets
  6. Données LZW, 3 bytes2

1 Requis pour la transparence
2 Seuls les 3 octets de données LZW sont requis et les octets peuvent être presque n'importe quoi, la Remorque peut être dépouillé

La plupart des GIF logiciels nécessitent une Globale/Locale de la Table des Couleurs pour être présent. Le plus petit enitrely-valide GIF est de 34 ou 35 octets (42-43 octets si transparent), en fonction de la manière dont le LZW les données peuvent être compressées.

Des réductions supplémentaires (par exemple, la suppression de Table de Couleur Globale) peut fonctionner dans certains navigateurs, mais leurs effets sont généralement spécifiques à l'implémentation.

Par exemple, le 22 octets est terriblement corrompu GIF, en travaillant comme un GIF transparent dans Chrome et Firefox, mais brisée en IE:

47 49 46 38 39 61 01 00 01 00 00 00 00 2C 00 00 00 00 01 00 01 00 00
or
data:image/gif;base64,R0lGODlhAQABAAAAACwAAAAAAQABAAA=

Les 14 octets de rendu de Chrome, mais rien d'autre:

47 49 46 38 39 61 01 00 01 00 00 00 00 2C
or
data:image/gif;base64,R0lGODlhAQABAAAAACw=

29voto

Jacob Points 1049

Voici ce que j'utilise dans un tableau d'octets C # (évite l'accès aux fichiers)

 static readonly byte[] TrackingGif = { 0x47, 0x49, 0x46, 0x38, 0x39, 0x61, 0x1, 0x0, 0x1, 0x0, 0x80, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x2c, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x1, 0x0, 0x0, 0x2, 0x2, 0x44, 0x1, 0x0, 0x3b };
 

Dans asp.net MVC cela peut être retourné comme ceci

 return File(TrackingGif, "image/gif");
 

20voto

gmunkhbaatarmn Points 1147

19voto

Mvision Points 806

Pour développer la réponse de tableau d'octets de Jacob, j'ai généré le tableau d'octets c # pour un gif transparant 1x1 que j'ai créé dans photoshop.

 static readonly byte[] TrackingGif = { 0x47, 0x49, 0x46, 0x38, 0x39, 0x61, 0x01, 0x00, 0x01, 0x00, 0x81, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0xff, 0x0b, 0x4e, 0x45, 0x54, 0x53, 0x43, 0x41, 0x50, 0x45, 0x32, 0x2e, 0x30, 0x03, 0x01, 0x01, 0x00, 0x00, 0x21, 0xf9, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x08, 0x04, 0x00, 0x01, 0x04, 0x04, 0x00, 0x3b};
 

15voto

polpo Points 121

http://polpo.org/blank.gif est un fichier GIF transparent de 37 octets composé de gifsicle.

Au format base64 css-ready:

 data:image/gif;base64,R0lGODlhAQABAHAAACH5BAUAAAAALAAAAAABAAEAAAICRAEAOw==
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X