作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是一名 Python 初学者。
我需要找到两个像素之间的 channel (红色、绿色、蓝色)差异,然后除以总像素数创建新像素。
我不知道应该使用什么条件或循环来打印输入像素之间的所有像素。
这是我到目前为止所写的内容:
p1 = int(input("Enter the first colour: "),16)
p2 = int(input("Enter the second colour: "),16)
colours = int(input("Enter the number of colours to generate inbetween: "))
red = (p1 & 0xFF0000) >> 16
green = (p1 & 0x00FF00) >> 8
blue = p1 & 0x0000FF
red2 = (p2 & 0xFF0000) >> 16
green2 = (p2 & 0x00FF00) >> 8
blue2 = p2 & 0x0000FF
red3 = abs(round(red-red2))/int(colours+1)
green3 = abs(round(green-green2))/int(colours+1)
blue3 = abs(round(blue-blue2))/int(colours+1)
print('0x%02x%02x%02x' % (red, green, blue))
这是一个输出示例:
Enter the first pixel: 0xFFDD33
Enter the second pixel: 0x002222
Enter the number of colours to generate inbetween: 3
Colours:
0x002222
0x405126
0x80802a
0xc0af2e
0xffdd33
最佳答案
尝试以下代码。它产生与样本类似的输出。差异主要是由于 float 的四舍五入造成的。
基本上,您需要确定两种颜色之间的差异。然后循环遍历 i=1 到 i=colors。通过每次添加差异来更新起始颜色。
p1 = int(input("Enter the first colour: "),16)
p2 = int(input("Enter the second colour: "),16)
colours = int(input("Enter the number of colours to generate inbetween: "))
red = (p1 & 0xFF0000) >> 16
green = (p1 & 0x00FF00) >> 8
blue = p1 & 0x0000FF
red2 = (p2 & 0xFF0000) >> 16
green2 = (p2 & 0x00FF00) >> 8
blue2 = p2 & 0x0000FF
red3 = abs((red2-red)/(colours+1))
green3 = abs((green2-green)/(colours+1))
blue3 = abs((blue2-blue)/(colours+1))
print('0x%02x%02x%02x' % (red, green, blue))
for i in range(1,colours+1):
red += red3
green += green3
blue += blue3
print('0x%02x%02x%02x' % (round(red), round(green), round(blue)))
print('0x%02x%02x%02x' % (red2, green2, blue2))
关于python - 如何在 Python 3 中计算并打印之间的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49787934/
我是一名优秀的程序员,十分优秀!