Code Golf:1x1黑色像素

时间:2010-05-29 00:23:02

标签: language-agnostic code-golf rosetta-stone image-compression

最近,我使用自己喜欢的图像编辑器制作1x1黑色像素(当您想要便宜地在HTML中绘制实心框时,它可以派上用场)。虽然我把它变成了单色PNG,但它却是120字节!我的意思是,那有点陡峭。 120个字节。 对于一个像素。然后我将它转换为GIF,将大小减小到43个字节。好多了,但还是......

挑战

生成 1x1黑色像素的最短图像文件或程序。提交可能是:

  • 表示1x1黑色像素的图像文件。选择的格式必须能够代表比1x1更大的图像,并且不能是临时的(也就是说,它不能是您刚刚为代码高尔夫编写的图像格式)。图像文件将按字节数排序。
  • 生成此类图像文件的程序。程序将按照字符数进行排名,就像在高尔夫代码中一样。

只要答案属于这两个类别中的一个,任何事情都是公平的。

此外,对于图像文件,请以十六进制或转义指定它们而不是使用外部图像主机: - )

17 个答案:

答案 0 :(得分:42)

Data URI,83个字符

data:image/gif;base64,R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==

答案 1 :(得分:26)

图片文件: 10个字节,格式为PGM

P5 1 1 1\n\0

要在Python中创建它: 40个字符

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

答案 2 :(得分:22)

Unicode art格式:

·

答案 3 :(得分:14)

WBMP,5个字节:

00 00 01 01 00

无法想象任何更小的

答案 4 :(得分:13)

PBM格式是黑白图形格式。

单个黑色像素的二进制表示将占用8个字节,并使用C#将其写入文件将如下所示:

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

答案 5 :(得分:9)

Logo / Turtle基本,12字节

PENDOWN FD 1

我不记得pendown是否可以缩短为pd,如果是,则将其缩短为7个字节。

答案 6 :(得分:6)

bash:31个字符

从interwebs下载单个像素gif的脚本比单个像素本身更少的字节...

wget http://tinyurl.com/2w97dyo

答案 7 :(得分:4)

Python + PIL 68字符

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

答案 8 :(得分:3)

后记,29个字节。不是真正的“单个像素”,但它在我的预览屏幕上是一个像素。

0 0 moveto .5 0 lineto stroke

答案 9 :(得分:3)

Python(w / PIL)(85个字符):

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

答案 10 :(得分:2)

我以前使用的旧图像格式:4个字节

 01 00 00 0C

格式由16位整数数组(小端)组成:

位映射:

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

控制位值:

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

答案 11 :(得分:2)

SVG,59个字符:

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

不幸的是,包括Doctype在内的它增长到了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>

答案 12 :(得分:2)

DrRacket:23个字符

#lang slideshow
(disk 1)

答案 13 :(得分:2)

我参加这个派对的时间已经很晚了,但是http://www.perlmonks.org/?node_id=7974比其他人发布的一般答案更多:

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

答案 14 :(得分:1)

XPM,57个字节

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

在寻找维基百科文章链接时,我发现 XPM2,26字节,但我无法在此处使用任何程序打开它。

! XPM2
1 1 1 1
. c #000
.

答案 15 :(得分:1)

Rebmu:16个字符

en'PNGmkIM![1x1]

如果您希望根据传入的参数将其保存到文件中,则会为该程序添加三个字符:

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

该程序是以下Rebol的简写,为清晰起见添加了括号:

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

答案 16 :(得分:0)

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

但定位它需要更多。