Python 如何保存解决此问题:使用PIL.Image保存图像

Python 如何保存解决此问题:使用PIL.Image保存图像,python,numpy,python-imaging-library,Python,Numpy,Python Imaging Library,我想用PIL.Image保存图像时出错 代码如下: from PIL import Image generated = np.load('/home/jovyan/GROUP_SHARED/Kimi.Zhang/cutout.npy') generated = generated[:25, :, :, :] print('image_size', generated.shape) j = Image.fromarray(generated) for i in range(len(generat

我想用PIL.Image保存图像时出错 代码如下:

from PIL import Image
generated = np.load('/home/jovyan/GROUP_SHARED/Kimi.Zhang/cutout.npy')
generated = generated[:25, :, :, :]
print('image_size', generated.shape)

j = Image.fromarray(generated)
for i in range(len(generated)):
    j.save('/home/jovyan/GROUP_SHARED/Kimi.Zhang/imagetest_' + str(i) +'.jpg')
“已生成”包含25幅图像,我想将它们逐个保存到jpg

结果是:

图像大小(25,3,32,32)
keyrerror回溯(最近一次调用)
/fromarray中的opt/conda/lib/python3.6/site-packages/PIL/Image.py(obj,模式)
2415 typekey=(1,1)+形状[2],arr['typestr']
->2416模式,rawmode=\u fromarray\u typemap[typekey]
2417键错误除外:

KeyError:((1,1,32,32),“试试这个,看看它是否有效。我所做的只是在for循环中取一行

for i in range(len(generated)):
    j = Image.fromarray(generated[i])
    j.save('/home/jovyan/GROUP_SHARED/Kimi.Zhang/imagetest_' + str(i) +'.jpg')

假设生成的
中的数据有效

  • 迭代第一个维度,跟踪索引
  • 确保数据类型正确
  • 创建图像
  • 保存图像


当然,另外
  KeyError                                  Traceback (most recent call last)
 /opt/conda/lib/python3.6/site-packages/PIL/Image.py in fromarray(obj, mode)
   2415             typekey = (1, 1) + shape[2:], arr['typestr']
-> 2416             mode, rawmode = _fromarray_typemap[typekey]
   2417         except KeyError:

KeyError: ((1, 1, 32), '<f4')

During handling of the above exception, another exception occurred:

TypeError                                 Traceback (most recent call last)
<ipython-input-47-1316bb4844f6> in <module>()
      7 #j = Image.fromarray(generated)
      8 for i in range(len(generated)):
----> 9     j = Image.fromarray(generated[i])
     10     j.save('/home/jovyan/GROUP_SHARED/Kimi.Zhang/imagetest_' + str(i) 
+ '.jpg')
     11 

/opt/conda/lib/python3.6/site-packages/PIL/Image.py in fromarray(obj, mode)
   2417         except KeyError:
   2418             # print(typekey)
-> 2419             raise TypeError("Cannot handle this data type")
   2420     else:
   2421         rawmode = mode

 TypeError: Cannot handle this data type
for i in range(len(generated)):
    j = Image.fromarray(generated[i])
    j.save('/home/jovyan/GROUP_SHARED/Kimi.Zhang/imagetest_' + str(i) +'.jpg')
...
prefix = '\my\path\prefix'
ext = 'jpg'
for suffix, data in enumerate(generated):
    print(data.shape)
    data.dtype = np.uint8
    im = Image.fromarray(data, mode = 'RGB')
    print(f'{prefix}_{suffix}.{ext}')
    im.save(f'{prefix}_{suffix}.{ext}', 'JPEG')