Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Разработка GUI > QImage записать в SQLite


Автор: Majesty 7.1.2011, 11:27
Есть софтина, записывающая QImage в файл.
Нужно писать в SQLite.
Непонятно, как получить из QImage какой-нибудь подходящий тип данных.

Автор: ufna 7.1.2011, 14:24
Загоняй в QByteArray

Автор: Majesty 7.1.2011, 16:55
Типа такого?
Код
      QImage image("test.png");
      QByteArray ba;
      QBuffer buf(&ba);
      image.save(&buf, "BMP");

Автор: ufna 7.1.2011, 17:54
Да, только формат в BMP не думаю что стоит делать, лучше этот аргумент по-умолчанию, имхо

Второй вариант сохранения - через QDataStream, тоже имеет право на жизнь.

Ну а ByteArray отлично кладется в БД

Автор: Majesty 7.1.2011, 17:56
Спасибо, попробую.
BMP - это просто копипаст, реально мне нужен PNG/JPG (скорее всего PNG).
Правильно ли я переписал код на питоне? (с питоном я, можно сказать, второй раз дело имею)
Код
# image = QImage(self._page.viewportSize(), QImage.Format_ARGB32)
...
                    ba = QByteArray()
                    buff = QBuffer(ba)
                    image.save(buff, options.format)
                    params = (ba, "image/%s"%options.format, time(), row['url'])
...
                    s_curs.execute("UPDATE screenshots SET data=?, mime=?, created=? WHERE filename=?", params)
Это программа для снятия скриншотов http://www.paulhammond.org/webkit2png/, которую я модифицирую под свои потребности.

Автор: Majesty 7.1.2011, 18:27
Что-то не едут лыжи... 
Цитата
                    ba = QByteArray();
                    buff = QBuffer(ba);
                    image.save(buff, format)
                    now = int(math.floor(time.time()))
                    params = (ba, "image/%s"%format, now, row['url'])
...
Traceback (most recent call last):
  File "./webkit2png.py", line 228, in __on_exec
    s_curs.execute("UPDATE screenshots SET data=?, mime=?, created=? WHERE filename=?", params)
  File "/usr/lib/python2.6/dist-packages/sqlite/main.py", line 255, in execute
    self.rs = self.con.db.execute(SQL % parms)
TypeError: not all arguments converted during string formatting
как быть?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)