如何利用python在几分钟内画出价值数万美金的Damien Hirst同款Painting

文摘   搞笑   2022-09-27 00:00   上海  

(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()

这样一个简单的小程序就写好啦!运行一下,感觉画出来还是有那么点儿意思的:

以下是通过调整参数所画出来大大小小不同形式的图片:


不知道打印出来放在艺术馆会有人买吗?
ImpromptuThoughts
First principle thinking