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

如何使用PIL将numpy数组转换为图像?代码运行输出全黑图

问题原因

你运行代码得到全黑图像,是两个写法错误导致的:

  • mode="1"是PIL的二值图像模式,该模式下像素取值范围为0-255,0代表纯黑,255代表纯白,你给中间块赋值的1属于极暗值,肉眼观测和纯黑没有区别。
  • 你创建numpy数组时指定dtype=int,该类型在不同运行环境下位长不固定,PIL读取数组时优先匹配8位无符号整数(uint8)类型,非指定类型容易出现值解析偏差。
修正代码

如果你的需求是生成黑底白色方块的二值图像,按如下写法修改即可:

import numpy as np
from PIL import Image

# 数组类型指定为PIL兼容的uint8
arr2 = np.zeros((200,200), dtype=np.uint8)
# 白色区域赋值为255,而非1
arr2[80:120,80:120] = 255
im = Image.fromarray(arr2, mode="1")
im.save("C:/Users/Admin/Desktop/testImage.jpg")

如果你不需要严格的1位二值图,只是要灰度效果,可以直接用PIL默认匹配的8位灰度模式(mode="L"),不需要手动指定mode参数:

import numpy as np
from PIL import Image

arr2 = np.zeros((200,200), dtype=np.uint8)
arr2[80:120,80:120] = 255
im = Image.fromarray(arr2)
im.save("C:/Users/Admin/Desktop/testImage.jpg")

注意:使用PIL转换numpy数组为图像时,普通图像场景统一将数组dtype设为np.uint8,像素值严格对应所选模式的取值范围,即可避免颜色显示异常问题。

内容的提问来源于stack exchange,提问作者noob4000

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.14 16:15:48