Что касается оригинального выпуска, это самая короткая версия, которая работает для меня:
Image.fromarray(255 * np.ones((100, 100), np.uint8), '1')
Я получаю правильное полностью белое изображение.
Как указано ранее , при переходе в режим "1" дизеринг активирован по умолчанию. Таким образом, возможно, цель режима «1» именно в этом: обеспечить быстрый способ создания размытых изображений. Давайте посмотрим на этот короткий пример:
from matplotlib import pyplot as plt
import numpy as np
from PIL import Image
plt.figure(1, figsize=(15, 5))
# Open some image
img = Image.open('path/to/your/image.png')
plt.subplot(1, 3, 1), plt.imshow(img)
# Convert to '1'; dithering activated by default
plt.subplot(1, 3, 2), plt.imshow(img.convert('1'))
# Convert to '1'; dithering deactivated
plt.subplot(1, 3, 3), plt.imshow(img.convert('1', dither=Image.NONE))
plt.tight_layout()
plt.show()
Это будет вывод:
Размытое изображение выглядит очень похоже на обычное изображение в градациях серого, когда оно достаточно маленькое. Когда дизеринг деактивирован (правое изображение), вы фактически получаете пороговое изображение, где все значения> = 128 установлены на белый или черный.
Надеюсь, это поможет!
-----------------------
System information
-----------------------
Python: 3.8.1
Matplotlib: 3.2.0rc1
NumPy: 1.18.1
Pillow: 7.0.0
-----------------------