关于PIL库Image.new()方法size起始值与坐标范围的技术问询
PIL Image.new() 中 Size 参数与坐标范围的说明
嘿,我来给你明确这个问题的答案:当你用 img = Image.new('RGB', (500,500), "white") 创建图像时,生成区域的最大坐标值是499,绝对不是500。
原因很简单,PIL的图像坐标系统是从(0,0)(左上角)开始计数的,size 参数里的数值代表的是图像的像素数量,而不是最大坐标值。具体来说:
- 宽度设置为500,意味着x轴的坐标范围是
0 ≤ x < 500,也就是从0到499,共500个像素点 - 高度设置为500,意味着y轴的坐标范围是
0 ≤ y < 500,同样是从0到499
你甚至可以自己写两行代码验证一下:
from PIL import Image img = Image.new('RGB', (500,500), "white") # 尝试访问(500,500)这个坐标 try: _ = img.getpixel((500,500)) except IndexError: print("果然,(500,500)超出了图像范围!")
运行这段代码肯定会抛出索引错误,这就直接证明了最大有效坐标是499。
另外补充个小知识点:PIL里所有涉及坐标的操作(比如裁剪、绘图)都是遵循这个“左闭右开”的规则,比如你用img.crop((0,0,500,500))裁剪的话,其实就是取整个图像,因为裁剪的参数是(left, top, right, bottom),其中right和bottom是不包含的边界。
内容的提问来源于stack exchange,提问作者Lemon Man
相关产品推荐
相关产品推荐

