首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何保存解决此问题:使用PIL.Image保存图像

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

Stack Overflow用户
提问于 2017-12-31 12:26:15
回答 2查看 4.3K关注 0票数 3

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

代码语言:javascript
复制
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')

"generated“包含25张图片,我想将它们逐个保存到jpg中。

结果是:

image_size (25,3,32,32)

代码语言:javascript
复制
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, 32), '<f4')

During handling of the above exception, another exception occurred:

TypeError                                 Traceback (most recent call last)
<ipython-input-45-00cdf704f05a> in <module>()
      5 
      6 
----> 7 j = Image.fromarray(generated)
      8 for i in range(len(generated)):
      9     j.save('/home/jovyan/GROUP_SHARED/Kimi.Zhang/imagetest_' + str(i) 
+ '.jpg')

/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

有人知道怎么解决这个问题吗?非常感谢!

添加:

代码语言:javascript
复制
  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
EN

回答 2

Stack Overflow用户

发布于 2017-12-31 14:27:49

假设generated中的数据是有效的。

对第一个维度进行迭代,跟踪索引并确保正确保存图像datatype

  • create

代码语言:javascript
复制
...
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')
票数 1
EN

Stack Overflow用户

发布于 2017-12-31 12:35:51

试试这个,看看它是否有效。我所做的就是把你的一行代码放在for循环中。

代码语言:javascript
复制
for i in range(len(generated)):
    j = Image.fromarray(generated[i])
    j.save('/home/jovyan/GROUP_SHARED/Kimi.Zhang/imagetest_' + str(i) +'.jpg')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48039983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档