图像文件的欺骗性 (2020)
The Treachery of Image Files (2020)

原始链接: http://beyondloom.com/blog/images.html

一位艺术收藏家面前摆放着一系列数字复制的微型画作,每幅画都是10x10像素的纯蓝色图像。这些作品的独特之处在于它们的质性(qualia),艺术家在详细的脚注中对这些质性进行了细致的记录。 “生成与消逝”运用Macintosh OS 10.14.6和预览应用,截取蓝色桌面壁纸的屏幕截图。“点彩派 I & II”运用文本编辑器(Sublime Text,Vim)和图像处理工具(ImageMagick,FFmpeg)手工编写PPM图像,并将其转换为GIF。“灼热的光”运用Nano和POV-Ray对蓝色背景进行光线追踪,由于POV-Ray与GIF不兼容,最终生成PNG文件。“修鞋匠”依靠Mach-O汇编器和dd命令创建GIF,克服了一个不需要的头部问题。“暗箱”运用深奥的K编程语言和iKe生成一个单帧动画GIF。“无”涉及通过电子邮件向同事索取一个特定的GIF文件。“绝望的痛苦”运用运行Ubuntu的虚拟机、GIMP和一个标有Charon标签的U盘来创建和传输图像。“蓝色与蓝色的构成”利用Gnuplot轻松自定义背景颜色,保存为GIF。

Hacker News 最新 | 过去 | 评论 | 提问 | 展示 | 招聘 | 提交 登录 图像文件的欺骗性 (2020) (beyondloom.com) 8 分,来自 appleorchard46,56 分钟前 | 隐藏 | 过去 | 收藏 | 1 评论 gnabgib 53 分钟前 [–] 当时的讨论 (113 分,30 条评论) https://news.ycombinator.com/item?id=24408509 回复 加入我们 6 月 16-17 日在旧金山举办的 AI 初创公司学校! 指南 | 常见问题 | 列表 | API | 安全 | 法律 | 申请 YC | 联系方式 搜索:
相关文章

原文

I have recently come into possession of a series of exquisite miniatures which I pray are worthy of your esteemed attention. While my employers are familiar with your unusual tastes, they also appreciate your desire for privacy- this showing was arranged with the utmost discretion, I assure you.

To the untrained eye, the pieces might appear remarkably similar. Each canvas is a digitally-reproduced composition measuring ten pixels in height and ten pixels in width, illuminated in a strikingly intense blue.

To an, ahem, avid collector such as yourself, it is no doubt obvious that each print possesses unique qualia, as expounded upon by the artist’s extensive footnotes. Please, take as long as you need…

Becoming and Unbecoming. Macintosh Operating System 10.14.6, Preview.App 10.1
Becoming and Unbecoming. Macintosh Operating System 10.14.6, Preview.App 10.1

In this piece, the artist used a carefully selected vintage of the Macintosh operating system. The desktop wallpaper color was customized to consist entirely of the desired blue, and then the Preview application was employed to take a screenshot and perform the necessary trimming. Tragically, Preview cannot save files in the Graphics Interchange Format (GIF).

Pointillism I. Sublime Text 3.2.2, ImageMagick 7.0.8-59
Pointillism I. Sublime Text 3.2.2, ImageMagick 7.0.8–59

In this piece, the artist manually constructed the image in the Portable PixMap (PPM) format using the Sublime text editor, as follows:

P3
# width, height, depth
10 10 1
0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1
0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1
0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1
0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1
0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1
0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1
0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1
0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1
0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1
0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1

The ImageMagick application was then used to convert it into a GIF file:

$ convert ii.ppm ii.gif
Pointillism II. Vim 8.0.1365, FFmpeg 4.1.4
Pointillism II. Vim 8.0.1365, FFmpeg 4.1.4

For this piece, the artist once again created a PPM image, this time using the Vi, Improved text editor, giving the source code a subtly crisper affect:

P3
# horizontal, vertical, perchannel
10 10 1
0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1
0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1
0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1
0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1
0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1
0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1
0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1
0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1
0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1
0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1

The Fast Forward Moving Pictures Expert Group application was then used to generate a GIF:

$ ffmpeg -i iii.ppm iii.gif
Searing Light. Nano 2.0.6, POV-Ray 3.7.0
Searing Light. Nano 2.0.6, POV-Ray 3.7.0

The artist composed this piece using the Persistence of Vision Raytracer language, composing the following script in the Nano’s Another text editor:

background { rgb <0, 0, 1> }

The scene was then raytraced as follows:

$ povray +Iiv.pov +W10 +H10 +Oiv

As with Preview above, the Persistence of Vision Raytracer is intentionally designed not to support the creation of GIF files; output is a Portable Network Graphics file instead.

The Cobbler. Sublime Text 3.2.2, as 10.0.1
The Cobbler. Sublime Text 3.2.2, as 10.0.1

This image was composed by the Macintosh Operating System X Mach-O Gnu’s Not Unix-based assembler, a utility for the creation of binary files. The Sublime text editor was once again employed for its neutral tone:

.ascii "GIF89a" # magic number
.short 10       # width
.short 10       # height
.byte  0xF0     # 2-entry global color table
.byte  0        # background color index
.byte  0        # 1:1 pixel aspect ratio

.byte  0x00     # color 0: blue
.byte  0x00
.byte  0xFF
.byte  0x00     # color 1: black
.byte  0x00
.byte  0x00

.ascii ","      # image descriptor
.long  0        # x/y offsets
.short 10       # width
.short 10       # height
.byte  0        # no local colortable
.byte  0        # minimum LZW code size
.byte  0        # end of frame

.ascii ";"      # finish

Curiously, the output of this assembler is prefaced with an entirely useless header, which must then be trimmed. (Hopefully future revisions of the tool will correct this obvious usability gaffe!) The composition was thus carried out as follows:

$ as v.s -o assembled.o
$ dd bs=1 skip=208 if=assembled.o of=v.gif
Camera Obscura. oK, iKe, Safari 12.1.2
Camera Obscura. oK, iKe, Safari 12.1.2

Here, the artist employed the Interactive K Environment (iKe), a tool based around the unfathomably esoteric programming language K. The tool can be used to save animated GIF images of program output; in this case, a single frame as indicated by fc:1. Note that iKe automatically doubles the size of pixels within images when rendering.

w:h:5
fc:1
draw:{,(;,"blue";5 5#0)}
Mu. English, Homo Sapiens
Mu. English, Homo Sapiens

For this work, the artist composed an electronic mail message to a colleague as follows:

Dear [REDACTED],
I pray this letter finds you well.

I am in grave need of your assistance. I require an opaque image file in the .GIF format,
measuring precisely 10 pixels square, consisting entirely of the hexadecimal RGB color #0000FF.
If you could provide me with such a file as an attachment, I would be immensely grateful.

Warmest Regards,
[REDACTED]

(P.S. This will make more sense later.)

Some time later, the artist used their electronic mail client to save the final print.

A Desperate Agony. VirtualBox 6.0.6, Ubuntu 19.04, GIMP 2.10.20, Shouting
A Desperate Agony. VirtualBox 6.0.6, Ubuntu 19.04, GIMP 2.10.20, Shouting

Here, the artist constructed a virtual machine- a sort of computing matryoshka, if you will- running the Ubuntu distribution of the Linux operating system. They then proceeded to install the GIMP application. Despite frequent threats by the developers to remove them, the GIMP application had (at time of composition) some obscure and infrequently-used features permitting the creation and manipulation of image files. After its painstaking creation, the file was then transferred between the virtual machine and its host by way of a physical Universal Serial Bus mass-storage device. The mass-storage device was prepared in advance by formatting it with the 32-bit File Allocation Table filesystem and labeling it Charon, in recognition of its role in transporting the soul of the artwork between worlds.

Composition in Blue and Blue. Gnuplot 5.2, Sublime Text 3.2.2
Composition in Blue and Blue. Gnuplot 5.2, Sublime Text 3.2.2

The artist generated this work using the Gnu’s Not Unix Plotter, based on the following description:

set terminal gif size 10,10
set output 'ix.gif'
set margins 0,0,0,0
unset key
unset tics
unset border
unset label
set style rectangle fs border lc rgb 'blue'
set object 1 rectangle from screen 0,0 to screen 1,1 fillcolor rgb 'blue' behind
plot 1 lt rgb 'blue'

Note in particular how easily a user of the Gnu’s Not Unix Plotter may customize the background color of a plot. The plot description may then be rendered as follows:

$ gnuplot ix.gp 

back

联系我们 contact @ memedata.com