Python天空颜色渐变

一、line方法

ImageDraw.line(xy, fill=None, width=0, joint=None)

  • xy:一组点的队列。形如[x1,y1,x2,y2] 或 [(x1,y1),(x2,y2),…]
  • fill:线的颜色
  • width:线宽
  • joint:一系列线之间的连接类型。它可以是"curve", 用于圆边,或None

二、天空颜色渐变

  绘制出天空颜色渐变的效果。

  • 1、创建一个背景为远山颜色的画布
  • 2、从顶部开始画上半部分
  • 3、颜色插值,从天空颜色逐渐变为远山颜色。
  • 4、循环使用渐变色画线条。

三、源程序

# -*- coding: utf-8 -*-
"""
Created on Feb  7 15:37:26 2022
@author: dalong10
""" 
from PIL import Image, ImageColor, ImageDraw

# 生成字符串"hsv(30,100%,100%)":
def colorstr(h,s,v):
    color1="hsv("+str(h)+","+str(s)+"%,"+str(v)+"%)"
    return color1.format("+{color1}+",color1)

# 生成四种绘制元素
cClouds=ImageColor.getrgb("hsv(330,25%,100%)")
cSky=ImageColor.getrgb("hsv(220,50%,50%)")
cFurther=ImageColor.getrgb("hsv(230,25%,90%)")
cCloser=ImageColor.getrgb("hsv(270,70%,10%)")
                          
# 创建一个背景为远山颜色的画布 
width = 800
height = 600

image = Image.new('RGB', (width, height), cFurther)
d = ImageDraw.Draw(image)
                         
for y in range(round(height/2)): #从顶部开始画上半部分
    h=220+round((230-220)*y/round(height/2)) #线性插值
    s=50+round((25-50)*y/round(height/2))
    v=50+round((90-50)*y/round(height/2))   
    ccolor=colorstr(h,s,v)
    d.line([0,y,width,y],ccolor,0,0) #渐变色
    # print(y,h,s,v )

image.save('skycolor.jpg', 'jpeg')
image.show()

四、运行结果

Python天空颜色渐变_第1张图片

五、参考资料:

1、童晶《Python趣味创意编程》第10章
2、Pillow官方网站

你可能感兴趣的:(Python,python,计算机视觉,开发语言)