问题
Recently, I used my favorite image editor to make a 1x1 black pixel (which can come in handy when you want to draw solid boxes in HTML cheaply). Even though I made it a monochrome PNG, it came out to be 120 bytes! I mean, that's kind of steep. 120 bytes. For one pixel. I then converted it to a GIF, which dropped the size down to 43 bytes. Much better, but still...
Challenge
The shortest image file or program that is or generates a 1x1 black pixel. A submission may be:
- An image file that represents a 1x1 black pixel. The format chosen must be able to represent larger images than 1x1, and cannot be ad-hoc (that is, it can't be an image format you just made up for code golf). Image files will be ranked by byte count.
- A program that generates such an image file. Programs will be ranked by character count, as usual in code golf.
As long as an answer falls into one of these two categories, anything is fair game.
Also, for image files, please specify them in hexadecimal or escapes rather than using an external image host :-)
回答1:
WBMP, 5 bytes:
00 00 01 01 00
Can't imagine anything smaller
回答2:
Data URI, 83 characters
data:image/gif;base64,R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==
回答3:
Image file: 10 bytes, in PGM format:
P5 1 1 1\n\0
To create it, in Python: 40 characters
open('b.pgm', 'w').write('P5 1 1 1\n\0')
回答4:
Unicode art format:
·
回答5:
The PBM format is a black and white graphics format.
A binary representation of a single black pixel would take 8 bytes, and writing it to a file with C# would look like:
File.WriteAllText("p.pbm", "P4 1 1 ÿ");
回答6:
Logo / Turtle basic, 12 bytes
PENDOWN FD 1
I can't remember if pendown
can be shortened to pd
or not, if so, that drops it to 7 bytes.
回答7:
bash: 31 chars
The script to download a single pixel gif from the interwebs is fewer bytes than the single pixel itself...
wget http://tinyurl.com/2w97dyo
回答8:
Python+PIL 68 chars
from PIL import Image
Image.fromstring("P",(1,1),"\0").save("B.gif")
回答9:
Postscript, 29 bytes. not really a "single pixel", but it was a single pixel on my preview screen.
0 0 moveto .5 0 lineto stroke
回答10:
Python (w/ PIL) (85 chars):
from PIL import Image
i=Image.new("P",(1,1))
i.putpixel((0,0),(0))
i.save("i.gif","GIF")
回答11:
An old image format I used to use: 4 bytes
01 00 00 0C
The format consists of an array of 16 bit integers (little endian):
Bit mapping:
0-10: number of pixels to shade
10-11: control bits
12-15: VGA16 pidel color
Control bits values:
0: normal
1: end of line
3: end of file
回答12:
SVG, 59 characters:
<svg><rect width="1" height="1" style="fill:#000;"/></svg>
Unfortuntally, including Doctype it grows to 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>
回答13:
DrRacket: 23 chars
#lang slideshow
(disk 1)
回答14:
I'm pretty late to this party, but http://www.perlmonks.org/?node_id=7974 has a more general answer than anyone's posted so far:
## 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;
回答15:
XPM, 57 bytes:
/* XPM */
static char *_x_[] = {"1 1 1 1",".c #000","."}
When looking for the wikipedia article to link it I found XPM2, 26 bytes, but I could not open that with any program here.
! XPM2
1 1 1 1
. c #000
.
回答16:
Rebmu: 16 chars
en'PNGmkIM![1x1]
If you want it to save to a file based on an argument you pass in, that adds three more chars to the program:
rebmu/args [wrAen'PNGmkIM![1x1]] %my-black-pixel.png
The program is shorthand for the following Rebol, parentheses added for clarity:
write a (encode 'png (make image! [1x1]))
回答17:
<div style="height: 0; width: 1px; border-top: 1px solid #000">
But positioning it will take more.
来源:https://stackoverflow.com/questions/2933251/code-golf-1x1-black-pixel