Language agnostic 代码:1x1黑色像素

Language agnostic 代码:1x1黑色像素,language-agnostic,code-golf,rosetta-stone,image-compression,Language Agnostic,Code Golf,Rosetta Stone,Image Compression,最近,我用我最喜欢的图像编辑器制作了一个1x1的黑色像素(当你想廉价地用HTML绘制实体框时,它会派上用场)。尽管我把它做成了单色PNG,结果却是120字节!我是说,这有点陡峭。120字节。对于一个像素。然后我将其转换为GIF格式,将大小降低到43字节。好多了,但还是 挑战 为或的最短图像文件或程序生成一个1x1黑色像素。呈件可为: 表示1x1黑色像素的图像文件。选择的格式必须能够表示比1x1更大的图像,并且不能是特别的(也就是说,它不能是您刚刚为code golf制作的图像格式)。图像文件将

最近,我用我最喜欢的图像编辑器制作了一个1x1的黑色像素(当你想廉价地用HTML绘制实体框时,它会派上用场)。尽管我把它做成了单色PNG,结果却是120字节!我是说,这有点陡峭。120字节。对于一个像素。然后我将其转换为GIF格式,将大小降低到43字节。好多了,但还是

挑战 的最短图像文件或程序生成一个1x1黑色像素。呈件可为:

  • 表示1x1黑色像素的图像文件。选择的格式必须能够表示比1x1更大的图像,并且不能是特别的(也就是说,它不能是您刚刚为code golf制作的图像格式)。图像文件将按字节数排序
  • 生成这样一个图像文件的程序。程序将按字符数进行排名,这在代码高尔夫中很常见
只要答案属于这两类中的一类,任何事情都是公平的


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

图像文件:10字节,格式为:

要创建它,请使用Python:40个字符

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

·

该格式是黑白图形格式

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

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

/* XPM */
static char *_x_[] = {"1 1 1 1",".c #000","."}
在寻找维基百科文章链接时,我发现XPM2有26个字节,但我无法用任何程序打开它

! XPM2
1 1 1 1
. c #000
.
,83个字符 Python(带PIL)(85个字符):
我以前使用的旧图像格式: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

Postscript,29字节。不是一个“单像素”,但在我的预览屏幕上是一个单像素

0 0 moveto .5 0 lineto stroke
bash:31个字符 从互联网站下载单像素gif的脚本比单像素本身的字节数少

wget http://tinyurl.com/2w97dyo

Logo/Turtle basic,12字节

PENDOWN FD 1

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

,5个字节: 无法想象任何更小的

Python+PIL 68字符
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>

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

rebmu/args [wrAen'PNGmkIM![1x1]] %my-black-pixel.png
该程序是以下Rebol的简写,为清晰起见,添加了括号:

write a (encode 'png (make image! [1x1]))
:23个字符
我参加这个聚会已经很晚了,但我有一个比目前任何人都要普遍的答案:

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



但是定位需要更多的时间。

哦,我以为我发现了一个死像素。即使在我的手机上,我也看到了一些抗锯齿。这表明(1)你给出了不止一个像素,(2)它不是完全黑色的。哇,两个字节,我想你是赢家:-)我把它看作是一个3x3像素矩阵,其中只有一个是纯黑色的。不可能!Ascii art格式:
(请注意,
@
也是1像素的有效Ascii art表示形式)。每像素1位可以吗?您可以在Windows上创建的最小文件大小是多少?或者是在内存中,每像素1位是可以的,但是图像格式必须能够保存较大的单色图像。我不确定你所说的最小文件大小是什么意思,但所使用的磁盘空间(例如4096字节)并不重要;文件大小本身很重要。我不喜欢这个问题,因为它违反了我对代码GOLF的“解决类或问题”要求。有关[code golf]的一些社区想法,请参见。@dmckee:与此相反的论点是,这个问题的答案向读者介绍了各种渲染格式和技术。它看起来是开始学习PGM、PBM、Logo、Python图像库、PostScript、SVG和XPM的好地方。如果我需要以编程方式绘制图像,我现在知道了一些好的起点。看起来是标准格式的赢家。我在DOS时代的旧绘图程序让你大吃一惊。我从来没有听说过这种格式,但这会做同样的事情:
perl-e'print“p51\n\0”>b.pgm
29个字符只需编写
import PIL
,然后
PIL.Image.new
?看起来少了5个字符左右。@chpwn。不会工作,因为图像不会自动出现在PIL的命名空间中!我认为这将是最有用的答案。它可以用来代替图像文件来减少服务器请求<代码>数据:图像/gif;base64、R0LGodlhaqabaaacwaaaaqabaacakwbads=和透明版本<代码>数据:图像/gif;base64,r0lgodlhaqabababajeaaaaaap/////waaach5baeaaaaaaaaaaaaaaaaaaaaaaaaaaicvaaow==@Joey:这只会在只需要一次的情况下减少,这对于您在问题中概述的用法来说可能并不常见。如果该图像由URL引用,则只提取一次,然后缓存。@Marian:0对1x1图像的请求仍然少于1个请求。yes pd是一个有效的别名:),尽管默认徽标背景画布为黑色,因此线条为白色;)幸运的是,您可以使用
,而不使用任何名称空间等,因为它是有效的HTML5。我假设大多数HTML5引擎并不真正关心是否有doctype,所以您的第一个示例应该可以。注意:.wbmp似乎是WAP/WML流产的一部分,并且两种流行的桌面浏览器(如Firefox、Chrome)都不支持开箱即用的格式-在HTML中使用这样的像素有什么意义?从第三行开始阅读描述了整个文件格式。没有幻数,图像尺寸是从扫描线的解释中暗示出来的(如果图像参差不齐,参考实现会使额外的空间变黑)。
<svg><rect width="1" height="1" style="fill:#000;"/></svg>
<!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>
en'PNGmkIM![1x1]
rebmu/args [wrAen'PNGmkIM![1x1]] %my-black-pixel.png
write a (encode 'png (make image! [1x1]))
#lang slideshow
(disk 1)
## 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">