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

使用numpy.concatenate拼接PNG图像出现TypeError错误如何解决

错误原因

代码存在两个核心问题:

  1. 直接将图片路径字符串传入numpy处理,没有实际读取图片为像素数组,触发数据类型不匹配报错。
  2. 构造的不规则二维列表(第一行3个元素、第二行2个元素)无法直接通过np.concatenate拼接,需要先分别拼接每一行的图片,再垂直拼接两行的结果。

修正后代码

import numpy as np
from PIL import Image

# 图片路径列表
img_paths = [
    'pics/myfig1.png',
    'pics/myfig2.png',
    'pics/myfig3.png',
    'pics/myfig4.png',
    'pics/myfig5.png'
]

# 按顺序读取所有图片为numpy像素数组
img_list = [np.array(Image.open(path)) for path in img_paths]

# 水平拼接第一行3张图(axis=1代表水平方向拼接)
row_top = np.concatenate([img_list[0], img_list[1], img_list[2]], axis=1)
# 水平拼接第二行2张图
row_bottom = np.concatenate([img_list[3], img_list[4]], axis=1)
# 垂直拼接两行(axis=0代表垂直方向拼接)
final_array = np.concatenate([row_top, row_bottom], axis=0)

# 处理透明通道:如果原始PNG带alpha通道,存JPG需要先转为RGB格式
if final_array.shape[-1] == 4:
    final_img = Image.fromarray(final_array).convert('RGB')
else:
    final_img = Image.fromarray(final_array)

# 保存文件,需要保留透明的话改为存PNG格式即可
final_img.save('finalfig.jpg')

注意事项

  • 请提前确认第一行3张图片的高度完全一致,第二行2张图片的高度完全一致,且两行拼接后的总宽度完全相等,否则会触发维度不匹配的报错,符合不调整原图尺寸的要求。
  • 如果需要保留图片的透明通道,将保存格式改为PNG即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 19:12:01