(https://gagosian.com/exhibitions/2012/damien-hirst-the-complete-spot-paintings-1986-2011-new-york/)
Damien Hirst于1965年6月7日生于布里斯托,是新一代英国艺术家的主要代表人物之一。他主导了90年代的英国艺术发展,并享有很高的国际声誉。
Damien对于生物有机体的有限性十分感兴趣,他的标志性作品就是《生者对死者无动于衷》(The Physical Impossibility of Death in the Mind of Someone Living), 是一条用甲醛保存在玻璃柜里面的18英尺长的虎鲨。
在2004年,该作被美国对冲基金经理Steven A. Cohen(Point 72的创始人)高价收购,据报出价达到800万英镑,是当时其中一个最贵的当代艺术品。
(Source: https://news.artnet.com/art-world/damien-hirsts-formaldehyde-works-leaking-478580)
Damien Hirst另一个很有名的系列就是他的spot painting,从1986年至今,他创作了超过千幅不同形式的spot painting,有几幅拍卖出了十几万美金。
从Artsy的官网可以看到,这个系列大部分售价在1-5万美金左右。
(https://www.artsy.net/artist-series/damien-hirst-spots)
这些画看上去形式都比较标准化,而配色则各有不同。所以作为没有艺术细胞的普通人,我们是不是也可以利用小程序,自动generate出价值几万美金的类似形态艺术作品呢(艺术家们请轻拍)~
这里需要利用几个非常容易入手的前人写好的库比如turtle(网址 https://docs.python.org/3/library/turtle.html)。turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。而很多画图的小程序都是以turtle为基础来制作的,非常方便。
(https://www.jb51.net/article/215864.htm)
下面就是开开心心的代码环节啦~
先把各种各样需要用到的库下载进来:
import turtle
from turtle import Turtle, Screen
import colorgram
import random
设置屏幕,给它起个名字:
screen = Screen()
screen.title("Hirst Painting Generator")
接着找一副花花绿绿的画,把里面的颜色元素提取出来:比如我这边从网上下载了一副叫做 “1200x878.jpeg” 的图,从里面提取50个颜色
colors = colorgram.extract('1200x878.jpeg', 50)
接着把这些颜色转化成rgb的格式,存入一个list中供后续作画使用。
rgb_color = []
for color in colors:
r = color.rgb.r
g = color.rgb.g
b = color.rgb.b
new_color = (r,g,b)rgb_color.append(new_color)
#e.g. (255, 151, 210)
color_list = rgb_color
用pensize设置一下画笔的大小,用hideturtle可以在运动轨迹中把画笔隐藏起来
damien_hirst = Turtle()
damien_hirst.hideturtle()
damien_hirst.shape("classic")damien_hirst.pensize(20)
开始画spot,设置起点,这边起点的位置按照turtle的坐标系和我们设置screen的大小选一个合适的位置即可。
start_x = -500
start_y = -250
damien_hirst.penup()
damien_hirst.goto(start_x, start_y)
damien_hirst.speed("fastest")
设置每个spot之间的间距,spot的数目,颜色用之前提取的颜色随机分布。比如这边我计划画20x10,就用两个for loop的不同长度嵌套来实现,当然这两个数都可以随意更改,以画出不同大小的图。
颜色的选择就用random.choice语句在我们之前存好的color_list中随机选择即可,这样可以保证每一次运行程序的时候,每一个画出来的spot都是list里随机的颜色。
for i in range(10):
for j in range(20):
damien_hirst.color(random.choice(color_list))
damien_hirst.pendown()
damien_hirst.forward(1)
damien_hirst.penup()
damien_hirst.forward(50)
damien_hirst.penup()
damien_hirst.goto(start_x, start_y + 50 * (i + 1))
程序运行完之后单击关闭屏幕
screen.exitonclick()
这样一个简单的小程序就写好啦!运行一下,感觉画出来还是有那么点儿意思的: