crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в GFL to QImage
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Alexey Дата 28.2.2008, 4:40
 
CODE


QImage image;

// ....

gflGetDefaultLoadParams( &load_option );

load_option.Flags |= GFL_LOAD_METADATA;
load_option.Flags |= GFL_LOAD_FORCE_COLOR_MODEL | GFL_LOAD_ORIGINAL_COLORMODEL;
load_option.Origin = GFL_BOTTOM_LEFT;
load_option.ColorModel = GFL_BGRA;
load_option.LinePadding = 4;

// ....

error = gflLoadBitmapFromHandle (QFile("bla bla bla"), &bitmap, &load_option, NULL);

if ( error == GFL_NO_ERROR)
{
unsigned char * data = bitmap->Data;

const unsigned height = bitmap->Height;
const unsigned width = bitmap->Width;
const unsigned pitch = bitmap->BytesPerLine;

QImage::Format format = QImage::Format_RGB32;

QImage tempImage(width, height, format);
tempImage.fill(Qt::black);

// set metrics data
tempImage.setDotsPerMeterX(bitmap->Xdpi);
tempImage.setDotsPerMeterY(bitmap->Ydpi);

for (unsigned y = 0; y < height; ++y)
memcpy(tempImage.scanLine(height - y - 1), (bitmap->Data+(pitch*y)), pitch);

image = tempImage;
}



В данном виде работает, хотя по немонятным мне причинам
gflLoadBitmapFromHandle подвисает на некотрых форматах =(

ну а насчет FreeImage в приложении которое я разрабатываю есть поддержка загрузки изображений и через FreeImage,
но видимо там есть свои косики, я эти вопросом не интересовался
Tonal Дата 22.2.2008, 8:48
  Видимо следует разобраться с форматами данных, в котором GFL_BITMAP предоставляет пикселы и QImage ожидает.
Какие цвета используется, какая длинна строки (scan line), прозрачность...
Насколько я понимаю, все эти данные есть и в GFL_BITMAP надо их просто корректно установить для экземпляра QImage, а уже потом передавать данные. :)

Да, есть ещё вариант написать адаптер, который бы для работы с изображением использовал XnView. :)

P.S. Да, а зачем вообще его - XnView использовать? Ежли надо много форматов можно, например FreeImage использовать - оно хоть открытое. :-)
А в XnView я как-то года 3-4 назад багу посылал и код для обхода его, но баг и ныне там...
Alexey Дата 22.2.2008, 1:26
  Каким образом лудше из
GFL_BITMAP * bitmap конвертировать
в QImage

этот вопрос обсуждаеся в http://newsgroup.xnview.com/viewtopic.php?t=1052 но ответа я так и не нашел =(
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 5.7.2025, 4:35