gpt4 book ai didi

python - 在图片上绘制对角线

转载 作者:太空狗 更新时间:2023-10-29 22:03:38 27 4
gpt4 key购买 nike

我正在尝试从图片的右上角到左下角绘制对角线。我希望它看起来像这样(可爱的油漆图片)

diag paint pic

def diagTopLBottomR():
pic=makePicture(pickAFile())
w=getWidth(pic)
h=getHeight(pic)
x1=0
y1=0
x2=0
y2=0
i=0
while i<11:
x1=10*i
y2=10*i
i+=1
for y in range (y1,y2):
x = (y-y1)*(x2-x1)/(y2-y1) +x1
px=getPixel(pic,x,y)
color=makeColor(0,0,0)
setColor(px, color)
x3=0
y3=h
x4=w
y4=0
j=0
while j<10:
x3=10*j
y4=10*j
j+=1
for y in range (y3,y4):
x = (y-y3)*(x4-x3)/(y4-y3) +x3
px=getPixel(pic,x,y)
color=makeColor(0,0,0)
setColor(px, color)

return(pic)

您会注意到 x3 要么是最大值,导致超出范围异常,要么 y 范围将从更高的值开始,即 (y3>y4) 并且不起作用相反,或者当我减少它时。这就像一个悖论。

第一个循环工作正常,无论我怎样尝试都无法让第二个循环工作。这就是我的结局。

diag lines

有什么想法吗?谢谢。


编辑

我试过这些范围,或者在第二个循环中没有得到任何结果,如上面所示的超出范围的异常。

我试过:

  x3=0
y3=h
x4=w
y4=0
j=0
while j<10:
x3=10*j
y4=10*j
j+=1
for x in range (x3,x4):
y = (x-x3)*(y4-y3)/(x4-x3) +y3

偷了 unicorn from here .

最佳答案

在第一部分,y1设置为 0 和 y2在循环中从 0 开始增加,所以 y1 < y2 .这很好,因为您使用

for y in range (y1,y2)

在第二部分,y3设置为 h (我猜你的情况是 128)和 y4在循环中从 0 开始增加,所以 y3 > y4 .这不好,因为你使用

for y in range (y3,y4)

您可以尝试向后退一步,给出 range()第三个参数表示步长为-1。或者你可以切换 y3y4 (请注意这对您的其余代码的影响)。

关于python - 在图片上绘制对角线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18064041/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com