如何修改使用PIL绘制的点网格中点的大小
问题解答
现有代码问题修正
你提供的代码存在两处可修正的问题:
- 第4行
draw = ImageDraw.Draw(i)中变量i未定义,应该替换为你前面创建的图像对象img - 内层循环的范围
range(step,h-step,step)会导致y轴方向最底部少一行点,如果你是特意要给图像四周留空白可以保留该设置,要铺满全图则改为range(step, h, step)即可
修正后你的代码可以正常生成1像素大小的黄色点网格。
调整点大小的实现方法
PIL自带的point()方法仅支持绘制1像素的点,无法直接调整尺寸,要生成更大的点可以使用以下两种方案:
方案1:绘制圆点(推荐)
使用ellipse()方法绘制圆形点,通过自定义半径参数即可灵活调整点的大小,完整参考代码如下:
from PIL import Image, ImageDraw img = Image.new("RGB", (1000,1000), (0, 0, 0)) draw = ImageDraw.Draw(img) w, h = img.size step = 100 point_radius = 3 # 按需调整点的半径,数值越大点越大 for x in range(step, w, step): for y in range(step, h, step): # 计算圆点外接矩形的上下左右坐标 draw.ellipse( (x - point_radius, y - point_radius, x + point_radius, y + point_radius), fill="yellow" ) img.show()
方案2:绘制方形点
如果需要方形点样式,将上述代码中的ellipse()方法替换为rectangle()即可,参数逻辑完全一致。
内容的提问来源于stack exchange,提问作者project.py
相关产品推荐
相关产品推荐

