Официальный форум СВД Встраиваемые Системы
18 Августа, 2017, 07:53:30 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
 
 
 Сайт СВД ВС  Начало   Помощь Поиск Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: конвертация QImage в img_t  (Прочитано 109 раз)
olegyadrov
Интересующийся

Сообщений: 3


« : 07 Мая, 2017, 22:03:22 »

люди добрые христа ради помогите нужна операция

пытаюсь отконвертировать QImage в img_t, но img_load всегда возвращает IMG_ERR_FORMAT ("No appopriate codec could be found. The codec you require could be missing or corrupt, or the file could be corrupt.")
Пробовал QImage::Format_RGBA8888 перевести и в IMG_FMT_PKLE_ARGB8888 и в IMG_FMT_PKBE_ARGB8888, но даже простейший случай QImage::Format_Mono в IMG_FMT_MONO не работает. код приблизительно такой:

Код:
    QImage testImage(300, 300, QImage::Format_Mono);
    QPainter painter(&testImage);
    painter.fillRect(0, 0, 300, 300,Qt::black);

    img_lib_t ilib;
    img_lib_attach(&ilib);

    img_t img;
    img.format = IMG_FMT_MONO;
    img.w = testImage.width();
    img.h = testImage.height();
    img.flags = IMG_FORMAT | IMG_W | IMG_H;

    io_stream_t *stream = io_open(IO_MEM, IO_READ, testImage.byteCount(), testImage.constBits());
    int ret = img_load(ilib, stream , NULL, &img);
    switch(ret) {
    case IMG_ERR_OK:
        printf("Success.\n");
        break;
    case IMG_ERR_MEM:
        printf("Memory-allocation failure.\n");
        break;
    case IMG_ERR_FORMAT:
        printf("No appopriate codec could be found. The codec you require could be missing or corrupt, or the file could be corrupt.\n");
        break;
    case IMG_ERR_NOSUPPORT:
        printf("Output data not supported; the codec and application could not agree on an output format.\n");
        break;
    case IMG_ERR_NODATA:
        printf("No frame data was present.\n");
        break;
    case IMG_ERR_CORRUPT:
        printf("Invalid data encountered in the file, preventing the decode from proceeding. Some of the frame may be intact.\n");
        break;
    case IMG_ERR_TRUNC:
        printf("Premature end of file encountered. Some of the frame may be intact.\n");
        break;
    case IMG_ERR_INTR:
        printf("Decode was interrupted by application.\n");
        break;
    }
    io_close(stream);
    img_lib_detach(ilib);

что я делаю не так?
Записан
olegyadrov
Интересующийся

Сообщений: 3


« Ответ #1 : 07 Мая, 2017, 23:39:38 »

Зубчатые колеса завертелись в башке и до меня наконец дошло, что img_load() не предназначена для загрузки raw image data. Собственно говоря, в доках так и написано:
> img_load()
> Decode a frame from a stream
И что делать? Вообще, мне нужно QImage нарисовать с помощью Advanced Graphics, то есть QImage по-хорошему нужно бы в gf_surface_t перегнать, а вместо этого революционная ситуация назрела, низы хотят но не могут, верхи тоже хотят но тоже не могут  Huh?
Записан
olegyadrov
Интересующийся

Сообщений: 3


« Ответ #2 : 07 Мая, 2017, 23:42:15 »

Ого, возможно, gf_draw_image() спасет отца русской демократии. О результатах испытаний сообщу дополнительно.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP © 2002-2017 СВД Встраиваемые Системы.
При использовании материалов сайта ссылка на forum.kpda.ru обязательна.

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines | © Aiwan. Kolobok smiles | Sitemap
Valid XHTML 1.0! Valid CSS!
Сайт СВД ВС

В последний раз google посещал эту страницу 08 Августа, 2017, 04:55:08