教你用 python 制作一张五彩斑斓的黑

先看效果:
在这里插入图片描述

基本构想:在黑色背景中随机填充稀薄的彩色像素点

主要流程:

  • 先创建 512 x 512的画布,背景设为不透明的纯黑色
  • 再在这个512 x 512 个像素点里按照一定的概率随机挑选像素点 m
  • 像素点 m 的颜色 从预设的7种颜色(赤橙黄绿青蓝紫)中随机挑选
  1. 安装用到的 图像处理 库

这里是 库 库 库,如果还没有安装 python 环境, 请自行百度python安装方法和相应的命令(python pip)添加到环境变量的方法

pip install pillow
  1. 创建 RGBA 图像画布, 背景色设置为不透明的纯黑色
from PIL import Image
width = 512
height = 512
# 图片大小为 512x512
img = Image.new('RGBA', (width, height), (0, 0, 0, 255))
  1. 随机挑选 3%的像素点变成彩色
# 设定挑选的点概率 0.03 就是3%
percent = 0.03
# 遍历 512x512 图像的所有像素点
for i in range(512):
    for j in range(512):
        # 因为 random.random() 产生的随机数是 0到 1 之间均匀分布的
        # 就直接用 random.random()产生随机值是 0 到 percent之间的就改变颜色
        if random.random() <= percent:
            # 从预设的colors颜色列表中随机挑选一个颜色
            rgba = random.choice(colors)
            # 设定坐标颜色
            img.putpixel((j, i), rgba)
  1. 保存图片
img.save('c.png', 'PNG')
print("哈哈, 五彩斑斓的黑大功告成!")
img.show()

最后完整代码如下

#!/bin/env python
# coding: utf-8
# author: ZhangTao
# Date  : 2019/12/12
#  五彩斑斓的黑

from PIL import Image
import random

width = 512
height = 512
# 图片大小为 512x512
img = Image.new('RGBA', (width, height), (0, 0, 0, 255))

# 预设7中颜色,后面随机生成像素点颜色要用到
colors = [
    # 赤
    (255, 0, 0, 255),
    # 橙
    (255, 128, 0, 255),
    # 黄
    (255, 255, 0, 255),
    # 绿
    (0, 255, 0, 255),
    # 青
    (0, 255, 255, 255),
    # 蓝
    (0, 0, 255, 255),
    # 紫
    (128, 0, 255, 255)
]

# 设定挑选的点概率 0.01 就是1%
percent = 0.01
# 遍历 512x512 图像的所有像素点
for i in range(512):
    for j in range(512):
        # 因为 random.random() 产生的随机数是 0到 1 之间均匀分布的
        # 就直接用 random.random()产生随机值是 0 到 percent之间的就改变颜色
        if random.random() <= percent:
            # 从预设的colors颜色列表中随机挑选一个颜色
            rgba = random.choice(colors)
            # 设定坐标颜色
            img.putpixel((j, i), rgba)

img.save('c.png', 'PNG')
print("哈哈, 五彩斑斓的黑大功告成!")
img.show()
  • 24
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 17
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值