Russian Qt Forum

Qt => Вопросы новичков => Тема начата: CyclicBarrier от Февраль 03, 2012, 13:16



Название: Qt и jpeg, jtiff
Отправлено: CyclicBarrier от Февраль 03, 2012, 13:16
Возможно ли как-то руками подгрузить плагины jpeg и jtiff без создания QApplication? В самом приложении они нормально грузятся и работают, а в тестах где нет создания QApplication они автоматически не находятся.


Название: Re: Qt и jpeg, jtiff
Отправлено: GreatSnake от Февраль 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;
}
 


Название: Re: Qt и jpeg, jtiff
Отправлено: kambala от Февраль 03, 2012, 14:28
на мак ос нужно использовать DYLD_LIBRARY_PATH вместо LD_LIBRARY_PATH