language-agnostic code-golf rosetta-stone image-compression

language agnostic - Código de Golf: 1x1 pixel negro



language-agnostic code-golf (17)

Python (w / PIL) (85 caracteres):

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

Recientemente, utilicé mi editor de imágenes favorito para crear un píxel negro de 1x1 (que puede ser útil cuando desee dibujar cuadros sólidos en HTML a bajo precio). Aunque lo hice un PNG monocromático, ¡resultó ser 120 bytes! Quiero decir, eso es un poco empinado. 120 bytes. Por un pixel Luego lo convertí en un GIF, que bajó el tamaño a 43 bytes. Mucho mejor, pero aún ...

Reto

El archivo o programa de imagen más corto que es o genera un píxel negro de 1x1. Una presentación puede ser:

  • Un archivo de imagen que representa un píxel negro de 1x1. El formato elegido debe ser capaz de representar imágenes más grandes que 1x1, y no puede ser ad-hoc (es decir, no puede ser un formato de imagen que acaba de inventar para el código de golf). Los archivos de imagen se clasificarán por recuento de bytes.
  • Un programa que genera un archivo de imagen de este tipo. Los programas se clasificarán por recuento de caracteres, como es habitual en el código de golf.

Mientras una respuesta caiga en una de estas dos categorías, cualquier cosa es juego limpio.

Además, para los archivos de imagen, especifíquelos en hexadecimal o escapes en lugar de utilizar un host de imagen externo :-)


Python + PIL 68 caracteres

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


bash: 31 caracteres

La secuencia de comandos para descargar un solo píxel GIF de las interwebs es menos bytes que el píxel individual en sí ...

wget http://tinyurl.com/2w97dyo


URI de datos , 83 caracteres

data:image/gif;base64,R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==


WBMP , 5 bytes:

00 00 01 01 00

No puedo imaginar nada más pequeño


Archivo de imagen: 10 bytes , en formato PGM :

P5 1 1 1/n/0

Para crearlo, en Python: 40 caracteres

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


El formato PBM es un formato de gráficos en blanco y negro.

Una representación binaria de un solo píxel negro tomaría 8 bytes, y escribirlo en un archivo con C # se vería así:

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



Logo / Tortuga básica, 12 bytes

PENDOWN FD 1

No puedo recordar si pendown se puede acortar a pd o no, de ser así, eso lo deja caer a 7 bytes.


Posdata, 29 bytes. no es realmente un "solo píxel", pero era un solo píxel en mi pantalla de vista previa.

0 0 moveto .5 0 lineto stroke


Un viejo formato de imagen que solía usar: 4 bytes

01 00 00 0C

El formato consiste en una matriz de enteros de 16 bits (little endian):

Mapeo de bits:

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

Valores de bits de control:

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


XPM , 57 bytes :

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

Cuando busqué el artículo de wikipedia para vincularlo, encontré XPM2, 26 bytes , pero no pude abrirlo con ningún programa aquí.

! XPM2 1 1 1 1 . c #000 .


SVG, 59 caracteres:

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

Desafortunadamente, incluyendo Doctype crece a 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>


Rebmu : 16 caracteres

en''PNGmkIM![1x1]

Si desea guardarlo en un archivo basado en un argumento que transfiere, eso agrega tres caracteres más al programa:

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

El programa es una abreviatura de los siguientes Rebol, paréntesis agregados para mayor claridad:

write a (encode ''png (make image! [1x1]))


DrRacket : 23 caracteres

#lang slideshow (disk 1)


Llego bastante tarde a esta fiesta, pero http://www.perlmonks.org/?node_id=7974 tiene una respuesta más general que la que se ha publicado hasta ahora:

## 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;


<div style="height: 0; width: 1px; border-top: 1px solid #000">

Pero posicionarlo tomará más.