Я пишу простой анализатор PNG, который может декодировать данные PNG и печатать необработанные пиксели, используя matplotlib. У меня нет проблем с печатью RGB, RGBA и чистого оттенка серого.
import matplotlib.pyplot as plt
import numpy as np
with PngParser() as png:
if png.greyscale:
plt.imshow(np.array(png.reconstructed_data).reshape((png.height, png.width)), cmap='gray', vmin=0, vmax=255)
plt.show()
elif png.greyalhpa:
?
else:
# RGB, RGBA
plt.imshow(np.array(png.reconstructed_data).reshape((png.height, png.width, png.bytesPerPixel)))
plt.show()
Где png.reconstructed_data
- простой массив пикселей.
К сожалению, matplotlib явно не поддерживает этот тип изображения. Вот цитата из документации :
Поддерживаемые формы массива:
(M, N): изображение со скалярными данными. Значения сопоставляются с цветами с использованием нормализации и карты цветов. Смотрите параметры норма, cmap, vmin, vmax.
(M, N, 3): изображение со значениями RGB (0-1 с плавающей запятой или 0-255 int).
(M, N, 4): изображение со значениями RGBA (0-1 с плавающей запятой или 0-255 int), то есть с прозрачностью. Первые два измерения (M, N) определяют строки и столбцы изображения.
Наша форма будет (M, N, 2).
Есть ли обходной путь для эта проблема?