python - 从数组转换回来时如何保留PNG图像的颜色
问题描述
每当我将 PNG 图像转换为 np.array 然后将其转换回 PNG 时,我都会丢失图像的所有颜色。当我从 np.array 转换回来时,我希望能够保留原始 PNG 的颜色。
原始PNG图像
我的代码:
from PIL import Image
im = Image.open('2007_000129.png')
im = np.array(im)
#augmenting image
im[0,0] = 1
im = Image.fromarray(im, mode = 'P')
输出图像的黑白版本
我也尝试使用getpalette
,putpalette
但这不起作用,它只返回一个 NonType 对象。
im = Image.open('2007_000129.png')
pat = im.getpalette()
im = np.array(im)
im[0,0] = 1
im = Image.fromarray(im, mode = 'P')
im= im.putpalette(pat)
解决方案
您的图像使用调色板使用单通道颜色。试试下面的代码。您还可以在 PIL 中“P”和“L”模式下的图像有什么区别?
from PIL import Image
import numpy as np
im = Image.open('gsmur.png')
rgb = im.convert('RGB')
np_rgb = np.array(rgb)
p = im.convert('P')
np_p = np.array(p)
im = Image.fromarray(np_p, mode = 'P')
im.show()
im2 = Image.fromarray(np_rgb)
im2.show()
推荐阅读
- bash - 如何将二进制浮点值写入 bash 中的文件?
- lua - Roblox lua。区域名称中的空格
- javascript - 从 window.webkitSpeechRecognition 过滤脏话
- spring - 如何在spring web socket中设置消息DROP OverflowStrategy
- node.js - 使用 Smartsheet API:如何在用户通过身份验证并重定向 url 后访问用户数据?
- cocoahttpserver - CocoaHTTPServer 是否支持流式响应?
- mysql - 如何让查询包含来自另一个表的名称及其名称的 id
- java - 当一个线程死了它的对象会发生什么?
- python - KeyError: 'input_1_ib-0' 当我保存我的自动编码器模型时
- openedge - 如何以 30 分钟为间隔对 24 小时数据进行分组以获取计数?