Является ли Image.point () правильным инструментом для
это работа?
Да, действительно, Image.point()
идеально подходит для этой работы
Какой формат / структура делает
Image.point () ожидать таблицы?
Вы должны сгладить список, чтобы вместо [(12, 140, 10), (10, 100, 200), ...]
использовать:
[12, 140, 10, 10, 100, 200, ...]
Вот быстрый пример, который я только что попробовал:
im = im.point(range(256, 0, -1) * 3)
И, кстати, если вам нужен больший контроль над цветами и вы чувствуете, что Image.point не для вас, вы также можете использовать Image.getdata
и Image.putdata
, чтобы менять цвета быстрее, чем load
и putpixel
, Это медленнее, чем Image.point
.
Image.getdata
дает вам список всех пикселей, изменяет их и записывает обратно, используя Image.putdata
. Это так просто. Но попробуйте сначала сделать это с помощью Image.point
.
EDIT
Я сделал ошибку в первом объяснении, сейчас я объясню правильно:
Таблица цветов на самом деле такова
[0, 1, 2, 3, 4, 5, ...255, 0, 1, 2, 3, ....255, 0, 1, 2, 3, ...255]
Каждая полоса располагается рядом с другой.
Чтобы изменить цвет (0, 0, 0) на (10, 100, 10), нужно сделать так:
[10, 1, 2, 3, 4, 5, ...255, 100, 1, 2, 3, ....255, 10, 1, 2, 3, ...255]
Чтобы преобразовать ваш список цветов в правильный формат, попробуйте это:
table = sum(zip(*colors), ())
Я думаю, мой первый пример должен продемонстрировать формат для вас.