Включение JPEG поддерживает для QImage в py2exe-скомпилированных сценариях Python?

Если вы хотите полный код:

public String getContactDisplayNameByNumber(String number) {
    Uri uri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(number));
    String name = "?";

    ContentResolver contentResolver = getContentResolver();
    Cursor contactLookup = contentResolver.query(uri, new String[] {BaseColumns._ID,
            ContactsContract.PhoneLookup.DISPLAY_NAME }, null, null, null);

    try {
        if (contactLookup != null && contactLookup.getCount() > 0) {
            contactLookup.moveToNext();
            name = contactLookup.getString(contactLookup.getColumnIndex(ContactsContract.Data.DISPLAY_NAME));
            //String contactId = contactLookup.getString(contactLookup.getColumnIndex(BaseColumns._ID));
        }
    } finally {
        if (contactLookup != null) {
            contactLookup.close();
        }
    }

    return name;
}
10
задан joaquin 4 December 2011 в 23:57
поделиться

9 ответов

После нескольких часов наталкивания на ту же проблему, я хотел бы поделиться решение, которое сработало для меня на Windows Vista: с помощью python2.6

скопируйте следующий каталог в ваш каталог dist, созданный py2exe:

C:\Python26\Lib\site-packages\PyQt4\plugins\imageformats

Я просто перетащил каталог imageformats прямо в свой каталог dist, без каких-либо дальнейших изменений в qt.conf или чего-либо подобного. Я не пробовал, но это может работать и для фононов.

14
ответ дан 3 December 2019 в 20:43
поделиться

Должен признаться, мне никогда не удавалось получить правильную комбинацию py2exe + pyqt (и py2exe вообще не помогает с кроссплатформенной упаковкой). PyInstaller кажется намного лучше - документация на http://www.pyinstaller.org/ устарела, но ствол svn намного старше. Некоторые документы представлены на слайдах, представленных на недавней конференции Pycon Italia Tre - http://www.pycon.it/static/stuff/slides/distribuire-programmi-python-con-pyinstaller.pdf - и слайды на английском языке и содержат адрес электронной почты текущего сопровождающего, так что они должны помочь! (И давайте все лоббируем текущего сопровождающего, чтобы он обновил документацию ...! -)

1
ответ дан 3 December 2019 в 20:43
поделиться

После того, как попробовали все вышеперечисленное решения напрасно, я просто использовал PIL для загрузки своих изображений. Поскольку я хотел преобразовать эти изображения в текстуру в виджете OpenGL Qt, результат был одинаковым при загрузке изображения с помощью Qt или PIL. Тем не менее, я сбит с толку, что такая простая вещь, как загрузка файлов JPEG, настолько сложна в библиотеке графического интерфейса, как хорошо известная и широко используемая как Qt.

0
ответ дан 3 December 2019 в 20:43
поделиться

У меня была точно такая же проблема. Исправлено с помощью этого: http://mail.python.org/pipermail/python-list/2008-June/669374.html

  1. Скопируйте плагины Qt в каталог: $ YOUR_DIST_PATH / PyQt4 / plugins;
  2. Скопируйте qt.conf в каталог dist;
  3. Отредактируйте qt.conf, измените префикс на ./PyQt4
0
ответ дан 3 December 2019 в 20:43
поделиться

Попробуйте добавить файл qt.conf в каталог вашего exe, чтобы указать qt, где искать двоичные файлы и плагины.

В простом случае работает что-то вроде следующего. , где вы просто сбрасываете все dll в тот же каталог, что и exe:

[Paths]
Prefix = .
Plugins = .

Обновление: затем скопируйте содержимое ваших плагинов (каталоги imageformat / sqldriver и т. д.) в каталог exe. Я не думаю, что вы можете загружать библиотеки DLL плагинов из того же каталога, что и exe. См. Документ подключаемого модуля Qt для получения подробной информации о подкаталогах подключаемых модулей. (Или оставьте 'plugins =.' И скопируйте каталог плагинов в каталог exe, так что у вас будет /plugins/imageloaders/qjpeg4.dll).

1
ответ дан 3 December 2019 в 20:43
поделиться

Этьен - Спасибо за подсказку. После долгого чтения и проб и ошибок я пришел к такому же выводу: используйте PIL для отображения jpeg в приложении, созданном с помощью py2app.

http://www.thetoryparty.com/wp/2009/08/27/ pyqt-and-py2app-strict-i-dont-know-what-to-do-with-you-when-youre-like-this /

Я предполагаю, что предлагаемые решения для py2exe / Windows не обязательно применимо к py2app / OSX.

1
ответ дан 3 December 2019 в 20:43
поделиться

Я использую OSX Leopard. Предположим, у вас есть приложение MyApp.app .

  • Поместите библиотеки libqjpeg.dylib и libqgif.dylib в
    MyApp.app/Contents / plugins / imageformats /
  • Поместите это в qt.conf в MyApp.app/Contents/resources/ :

      [Пути]
    Префикс =.
    Бинарные файлы =.
    

На моей машине (Leopard) это работает.

1
ответ дан 3 December 2019 в 20:43
поделиться

в Windows предлагаемые решения работают отлично.

однако в OSX не удается заставить его работать даже с указанными выше инструкциями.

вопрос: libqjpeg.dylib Файлы и libqgif.dylib находятся в каталоге / Developer / Applications / Qt / plugins / imageformats / , и если вы установили сам Qt, а не только PyQt. эти файлы у меня не работают.

В дистрибутиве PyQt я вижу файлы libqjpeg.bundle и libqgif.bundle в / opt / local / libexec / qt4 -mac / plugins / imageformats / , однако это не библиотеки, и, кстати, я тоже не могу открыть их содержимое, даже если они имеют расширение .bundle. использование этих файлов вместо них тоже не работает.

Мне любопытно узнать, что вы сделали, чтобы он работал на osx.

0
ответ дан 3 December 2019 в 20:43
поделиться

Для меня проблема была решена, просто копирование «QT.conf» для каталога исполняемого файла.

Вы можете найти «QT.conf» в ... \ pythonxx \ lib \ site-packages \ pyqt4 \ qt.conf.

Спасибо за помощь.

0
ответ дан 3 December 2019 в 20:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: