создайте полутоновое изображение

Я считываю двоичные данные из одного файла, который определяет значения интенсивности через координаты X и Y (не формат изображения с открытым исходным кодом), и хотят преобразовать его в изображение PNG (или другой широко поддерживаемый формат). Мне загрузили данные в массив (использующий модуль массива), где каждый элемент является целым числом от 0 до 255. Для сохранения этого к PNG, я могу создать 3 кортежа объекта каждого элемента (x) как так:

t = (x, x, x)

добавьте применяют его через массив с помощью карты (), затем сохраняют образ с помощью putdata (). Однако преобразование в массив кортежей занимает много времени (несколько минут). Есть ли способ определить значение rgb с помощью только одного целого числа (не кортеж). Я предполагающий альтернативу должен был бы использовать NumPy, но я не знаю, где запустить, таким образом, любая справка в этом отношении также ценилась бы.

Заранее спасибо за справку.

9
задан Vince 21 January 2010 в 17:02
поделиться

3 ответа

Когда вы создаете новое изображение, дайте ему режим L:

im = Image.new('L', size)
im.putdata([x1, x2, x3, ...])

, где данные представляют собой список значений, а не кортежи.

15
ответ дан 4 December 2019 в 11:41
поделиться
3653547-

Существует несколько способов сделать это, но если у вас уже есть данные в памяти, посмотрите на использование Image.frombuffer или Image.fromString Используя режим «L» (для 8-битных данных Greyscale).

3
ответ дан 4 December 2019 в 11:41
поделиться

Был бы IM.PUTPixel (xy, цвет) быть тем, что вы ищете?

0
ответ дан 4 December 2019 в 11:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: