@luchs
Новичок в деле программирования

Как отобразить загруженную картинку с интернета без промежуточного сохранения на диск?

Программа скачивает с интернета с помощью библиотеки requests картинку и отображает в QLabel на форме.
Сейчас программа делает это так (python 3.5):
if res.status_code == 200:
    path = "images/"+trek+"#1"+".jpg"
    with open(path, "wb") as w:
        w.write(res.content)
    img1.setPixmap(QtGui.QPixmap(path))

т.е. сохраняет картинку и потом открывает её. Как отобразить картинку сразу, не сохраняя её на диске?
На сайте я находил подобный вопрос, но не на языке python и я - новичок, разобраться не смог. Перепробовал разные варианты. Помогите нубу.
  • Вопрос задан
  • 434 просмотра
Решения вопроса 1
sim3x
@sim3x
попробуй так
# python2
# from StringIO import StringIO

from io import StringIO

if res.status_code == 200:
    p = QtGui.QPixmap()
    p.loadFromData(StringIO(res.content))
    img1.setPixmap(p)


или используй /tmp/
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
Ну, можно передавать картинку из памяти - QPixmap::QPixmap(const char * const[] xpm)
Только перед этим ее нужно преобразовать изображение в массив xpm.

Еще можно:
1) сначала из потока байт создаем
QImage::QImage(uchar * data, int width, int height, Format format)

2) потом получившийся QImage переделываем в QPixmap
bool QPixmap::convertFromImage(const QImage & image, Qt::ImageConversionFlags flags = Qt::AutoColor)

3) передаем его в img1.setPixmap
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы