Что самый быстрый путь состоит в том, чтобы нарисовать изображение из дискретных пиксельных значений в Python?

Позвольте мне просто повторить проблему, описанную @Steg

. У меня была аналогичная проблема с вашей. Я выполняю запрос ajax, который имеет 2 возможных ответа: один, который перенаправляет браузер на новую страницу и заменяет существующую HTML-форму на текущей странице новым.

ИМХО это является реальной проблемой и должен быть официально распространен на существующие HTTP-стандарты.

Я считаю, что новым стандартом Http будет использоваться новый код состояния. значение: в настоящее время 301/302 сообщает браузеру перейти и получить содержимое этого запроса к новому location.

В расширенном стандарте он скажет, что если ответ status: 308 (просто пример), браузер должен перенаправить главную страницу на предоставленную location.

Это сказано; Я склонен уже имитировать это поведение future , и поэтому, когда необходим document.redirect, я отвечаю на сервер как:

status: 204 No Content
x-status: 308 Document Redirect
x-location: /login.html

Когда JS получает " status: 204 ", он проверяет существование заголовка x-status: 308 и делает document.redirect на странице, представленной в заголовке location.

Это имеет для вас какое-то значение?

34
задан saffsd 12 January 2009 в 06:08
поделиться

3 ответа

Если Вы имеете numpy и scipy доступный (и если бы Вы управляете большими массивами в Python, я рекомендовал бы им), то scipy.misc.pilutil.toimage функция очень удобна. Простой пример:

import numpy as np
import scipy.misc as smp

# Create a 1024x1024x3 array of 8 bit unsigned integers
data = np.zeros( (1024,1024,3), dtype=np.uint8 )

data[512,512] = [254,0,0]       # Makes the middle pixel red
data[512,513] = [0,0,255]       # Makes the next pixel blue

img = smp.toimage( data )       # Create a PIL image
img.show()                      # View in default viewer

хорошая вещь toimage, справляется с различными типами данных очень хорошо, таким образом, 2D массив чисел с плавающей запятой разумно преобразовывается в шкалу полутонов и т.д.

, можно загрузить numpy и scipy от здесь . Или использование зернышка:

pip install numpy scipy
35
ответ дан 27 November 2019 в 05:55
поделиться
import Image
im= Image.new('RGB', (1024, 1024))
im.putdata([(255,0,0), (0,255,0), (0,0,255)])
im.save('test.png')

Помещает красный, зелено-синий пиксель в верхнее левое из изображения.

im.fromstring() быстрее все еще, если Вы предпочитаете иметь дело со значениями байта.

18
ответ дан 27 November 2019 в 05:55
поделиться

Я думаю, что Вы используете PIL для генерации файла изображения на диске, и Вы позже загружаете его программным обеспечением читателя изображения.

необходимо получить маленькое улучшение скорости путем рендеринга непосредственно изображения в памяти (Вы сохраните стоимость записи изображения на диске и затем перезагрузке его). Взгляните на этот поток https://stackoverflow.com/questions/326300/python-best-library-for-drawing для того, как представить то изображение с различными модулями Python.

я лично попробовал бы wxpython и dc. Функция DrawBitmap. При использовании такого модуля, а не внешнего читателя изображения, Вы будете обладать многими преимуществами:

  • скорость
  • Вы сможете создать интерактивный пользовательский интерфейс с кнопками для параметров.
  • Вы сможете легко программировать функцию Zoomin и Zoomout
  • , Вы сможете вывести изображение на печать, поскольку Вы вычисляете его, который может быть довольно полезным, если вычисление занимает много времени
1
ответ дан 27 November 2019 в 05:55
поделиться
Другие вопросы по тегам:

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