Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: Авварон от Октябрь 31, 2009, 11:42



Название: еще баг Qt?
Отправлено: Авварон от Октябрь 31, 2009, 11:42
Код:
#include <QtGui/QApplication>
#include "mainwindow.h"
#include <QImageWriter>
#include <QDebug>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    //QImage img("1.jpg");
    QImageWriter writer("2.jpg");
    qDebug() << "1: " << writer.format();
    //writer.write(img);
    return a.exec();
}
writer.format(); возвращает пустую строку... Скорее всего он рабтает только в паре с setFormat, что в корне неверно... (к примеру мне надо в зависимости от пути который выбрал юзер и как следствие формат, сохранять картинку с разными параметрами)
Проверил под мак/виндовз - строка пустая. Как глядеть какие баги есть в багтрекере qt?)


Название: Re: еще баг Qt?
Отправлено: cya-st от Октябрь 31, 2009, 12:07
А какая версия QT? Может в новой версии испралено.


Название: Re: еще баг Qt?
Отправлено: Авварон от Октябрь 31, 2009, 12:56
4.5.3, вот я и спрашиваю - где глянуть... мб в 4.6 норм


Название: Re: еще баг Qt?
Отправлено: SABROG от Октябрь 31, 2009, 13:07
Как глядеть какие баги есть в багтрекере qt?)

По QImageWriter там находится один лишь багрепорт, да и тот о другом. А искать можно через создание нового фильтра (просто его сохранять не обязательно) и вводя в поле Text Search->Query: нужные слова. Проще конечно через Quick Search в правом верхнем углу.


Название: Re: еще баг Qt?
Отправлено: zenden от Октябрь 31, 2009, 15:41
Код
C++ (Qt)
QImageWriter::QImageWriter(const QString &fileName, const QByteArray &format)
   : d(new QImageWriterPrivate(this))
{
   QFile *file = new QFile(fileName);
   d->device = file;
   d->deleteDevice = true;
   d->format = format;
}
 
 
/*!
   Sets the format QImageWriter will use when writing images, to \a
   format. \a format is a case insensitive text string. Example:
 
   \snippet doc/src/snippets/code/src_gui_image_qimagewriter.cpp 0
 
   You can call supportedImageFormats() for the full list of formats
   QImageWriter supports.
 
   \sa format()
*/

void QImageWriter::setFormat(const QByteArray &format)
{
   d->format = format;
}
 
/*!
   Returns the format QImageWriter uses for writing images.
 
   \sa setFormat()
*/

QByteArray QImageWriter::format() const
{
   return d->format;
}

Поле d->format заполняется при вызове метода save()



Название: Re: еще баг Qt?
Отправлено: ufna от Октябрь 31, 2009, 22:07
вообще, это кажется логичным. Т.к. до того, как врайтер не начнет записывать, ему знать формат необязательно (т.е. ему до его действий нужно уже обратиться к файлу)


Название: Re: еще баг Qt?
Отправлено: Авварон от Октябрь 31, 2009, 22:24
а опции записи мне как определять не зная формат изображения?


Название: Re: еще баг Qt?
Отправлено: ufna от Октябрь 31, 2009, 22:28
а QImageReader на что? По-моему, это есть специфика разделения, а не баг. Ридер отлично читает формат, не загружая изображения. Райтер же возвращает тот формат, который он использовал для записи.


Название: Re: еще баг Qt?
Отправлено: Авварон от Октябрь 31, 2009, 22:34
в доке сказано, что если в конструкторе не указан параметр формат, он берется из расширения. Из этого следует что в момент когда врайтер создан, то формат известен.
Совсем тупая задача - есть имадж, его можно сохранить как жпег или как другой формат (.blp). Оба поддерживают сжатие, но вот я скорее всего если и буду сохранять как жпег, то со 100% качеством для последующей работы, а .blp я буду сохранять с 30% сжатием для использования. Мне приходится самому проверять расширение, чтобы выставить параметры сжатия. Кроме того, для .blp есть еще штук 8 разных параметров. Почему я должен делать ту работу, к-ая, как следует из документации, выполняется в конструкторе?


Название: Re: еще баг Qt?
Отправлено: Авварон от Ноябрь 05, 2009, 14:25
так что делать с таким поведением? запостить в трекер или забить и считать что "так надо"?