Question

Récemment, j'ai utilisé mon éditeur d'image favori pour faire un 1x1 pixel noir (ce qui peut être utile lorsque vous voulez dessiner des boîtes solides en HTML bon marché). Même si je l'ai fait au format PNG monochrome, il est sorti pour être 120 octets! Je veux dire, c'est un peu raide. 120 octets. Pour un pixel . Je puis converti à un GIF, qui a chuté la taille jusqu'à 43 octets. Beaucoup mieux, mais quand même ...

Défi

Le plus court fichier d'image ou d'un programme is ou génère un 1x1 pixel noir. Une demande peut être:

  • Un fichier d'image qui représente un pixel noir 1x1. Le format choisi doit être en mesure de représenter des images plus grandes que 1x1, et ne peut pas être ad hoc (qui est, il ne peut pas être un format d'image que vous venez pour le golf de code). Les fichiers image seront classés par nombre d'octets.
  • un programme qui génère un tel fichier image. Les programmes seront classés par nombre de caractères, comme d'habitude dans le golf de code.

Tant qu'une réponse tombe dans l'une de ces deux catégories, tout est un jeu équitable.

En outre, pour les fichiers d'image, s'il vous plaît les spécifier en hexadécimal ou échappe plutôt que d'utiliser un hôte d'image externe: -)

Était-ce utile?

La solution

WBMP , 5 octets:

00 00 01 01 00

Ne peut pas imaginer quoi que ce soit plus petit

Autres conseils

URI données , 83 caractères

data:image/gif;base64,R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==

Fichier image: 10 octets , PGM Format:

P5 1 1 1\n\0

Pour créer, en Python: 40 caractères

 open('b.pgm', 'w').write('P5 1 1 1\n\0')

Le format PBM est un format graphique en noir et blanc.

Une représentation binaire d'un seul pixel noir prendrait 8 octets, et l'écrire dans un fichier avec C # ressemblerait à ceci:

File.WriteAllText("p.pbm", "P4 1 1 ÿ");

Logo / tortue de base, 12 octets

PENDOWN FD 1

Je ne me souviens pas si pendown peut être raccourci à pd ou non, le cas échéant, qu'il tombe à 7 octets.

bash: 31 caractères

Le script pour télécharger un seul pixel gif des interwebs est moins d'octets que lui-même pixel ...

wget http://tinyurl.com/2w97dyo

python + PIL 68 caractères

from PIL import Image
Image.fromstring("P",(1,1),"\0").save("B.gif")

Postscript, 29 octets. pas vraiment un « pixel », mais il était un seul pixel sur mon écran d'aperçu.

0 0 moveto .5 0 lineto stroke

python (p / PIL) (85 caractères):

from PIL import Image
i=Image.new("P",(1,1))
i.putpixel((0,0),(0))
i.save("i.gif","GIF")

Un ancien format d'image que je l'habitude d'utiliser: 4 octets

 01 00 00 0C

Le format est constitué d'une matrice de 16 nombres entiers de bit (peu endian):

Bit mapping:

0-10:  number of pixels to shade
10-11: control bits
12-15: VGA16 pidel color

Contrôle de bits de valeurs:

0: normal
1: end of line
3: end of file

SVG, 59 caractères:

<svg><rect width="1" height="1" style="fill:#000;"/></svg>

Unfortuntally, y compris Doctype il pousse à 157 ...:

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg><rect width="1" height="1" style="fill:#000;"/></svg>

DrRacket : 23 caractères

#lang slideshow
(disk 1)

Je suis assez tard pour ce parti, mais http://www.perlmonks.org/ ? node_id = 7974 a un plus général réponse que personne jusqu'à présent du posté:

## tinygif
## World's Smallest Gif
## 35 bytes, 43 if transparent

use strict;
my($RED,$GREEN,$BLUE,$GHOST,$CGI);

## Adjust the colors here, from 0-255
$RED   = 255;
$GREEN = 0;
$BLUE  = 0;

## Set $GHOST to 1 for a transparent gif, 0 for normal
$GHOST = 0;

## Set $CGI to 1 if writing to a web browser, 0 if not
$CGI = 0;

$CGI && printf "Content-Length: %d\nContent-Type: image/gif\n\n", 
  $GHOST?43:35;
printf "GIF89a\1\0\1\0%c\0\0%c%c%c\0\0\0%s,\0\0\0\0\1\0\1\0\0%c%c%c\1\0;",
  144,$RED,$GREEN,$BLUE,$GHOST?pack("c8",33,249,4,5,16,0,0,0):"",2,2,4;

XPM , 57 octets :

/* XPM */
static char *_x_[] = {"1 1 1 1",".c #000","."}

Lorsque vous cherchez l'article wikipedia pour le lier j'ai trouvé XPM2, 26 octets , mais je ne pouvais pas ouvert tout programme ici.

! XPM2
1 1 1 1
. c #000
.

Rebmu : 16 caractères

en'PNGmkIM![1x1]

Si vous voulez enregistrer dans un fichier basé sur un argument que vous passez, qui ajoute trois autres caractères au programme:

rebmu/args [wrAen'PNGmkIM![1x1]] %my-black-pixel.png

Le programme est un raccourci pour les éléments suivants Rebol, les parenthèses ajouté pour plus de clarté:

write a (encode 'png (make image! [1x1]))
<div style="height: 0; width: 1px; border-top: 1px solid #000">

Mais le positionnement, il faudra plus.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top