Russian Qt Forum
Ноябрь 24, 2024, 08:44 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Qt и jpeg, jtiff  (Прочитано 2232 раз)
CyclicBarrier
Гость
« : Февраль 03, 2012, 13:16 »

Возможно ли как-то руками подгрузить плагины jpeg и jtiff без создания QApplication? В самом приложении они нормально грузятся и работают, а в тестах где нет создания QApplication они автоматически не находятся.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Февраль 03, 2012, 13:34 »

Вот так я гружу jpeg-и используя локальный qjpeg:
Код
C++ (Qt)
bool QULoadJpegImage( QImage* img, const QString& fname )
{
QFile path( fname );
if( !path.exists() )
return false;
static QPluginLoader* pl;
if( !pl )
{
QStringList dirs;
dirs << QCoreApplication::applicationDirPath();
#ifndef Q_OS_WIN
dirs <<
QString( qgetenv( "LD_LIBRARY_PATH" ) ).split( ':' ) <<
qgetenv( "QTDIR" ) + "/plugins/imageformats";
#endif
// try to load own qjpeg plugin
for( int i = 0; i < dirs.count(); i++ )
{
QDir ldir( dirs.at( i ), "*qjpeg*", QDir::Unsorted, QDir::Files );
if( !ldir.exists() )
continue;
QStringList l( ldir.entryList() );
for( QStringList::iterator it = l.begin(); it != l.end(); ++it )
{
if( !QLibrary::isLibrary( *it ) )
continue;
if( pl )
delete pl;
pl = new QPluginLoader( ldir.filePath( *it ) );
if( pl && pl->load() )
break;
}
if( pl )
break;
}
}
QImageIOPlugin* plugin;
if( pl && ( plugin = qobject_cast< QImageIOPlugin* >( pl->instance() ) ) )
{
if( QImageIOHandler* handler = plugin->create( &path, "jpeg" ) )
{
if( handler->read( img ) )
return true;
}
}
return false;
}
 
« Последнее редактирование: Февраль 03, 2012, 14:37 от GreatSnake » Записан

Qt 5.11/4.8.7 (X11/Win)
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #2 : Февраль 03, 2012, 14:28 »

на мак ос нужно использовать DYLD_LIBRARY_PATH вместо LD_LIBRARY_PATH
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.075 секунд. Запросов: 23.