【问题标题】:Saving to .png from an array gives glitchy results从数组保存到 .png 会产生错误的结果
【发布时间】:2022-02-13 18:31:58
【问题描述】:

不是一个大问题, 这是代码:

def rgb_to_png(rgb, path):
    rgbarray = np.array([np.array([x for x in i]) for i in rgb])
    rgbimage = PIL.Image.fromarray(rgbarray, "RGB")
    
    rgbimage.save(path+"\sample.png", "PNG", quality=100)

它应该是这样的: Image1

这就是代码输出的内容: Output

似乎它将每个 rgb 值保存为单个像素或类似的东西,但我不明白代码中有什么问题。里面发生了什么?

(注意:两张图片的分辨率都是 128 x 128)

【问题讨论】:

    标签: python-3.x python-imaging-library


    【解决方案1】:

    您需要在创建 Numpy 数组时指定它们的类型,否则它们不会像 PIL 期望的那样是无符号的 8 位:

    rgbarray = np.array(..., np.uint8)
    

    您可以通过以下方式检查您的:

    print(rgbarray.dtype)
    

    另外,Image.save() 的最后两个参数是多余的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多