You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:36:07