crossplatform.ru

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

> QImage не сохраняет в JPG
Kostik_
  опции профиля:
сообщение 8.10.2008, 13:15
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 3
Регистрация: 8.10.2008
Пользователь №: 385

Спасибо сказали: 0 раз(а)




Репутация:   0  


Здравствуйте!

Моя программа преобразувает файлы из bmp в jpg. На ПК где есть Qt работает. А на других нет. Все динамические библиотеки я переписал (QtGui4.dll, QtCore4.dll .....). Програма ни каких сообщений об ошибке "не выбрасывает" (я имею ввиду о нехватке каких то файлов). QImage::save("*.jpg",...) возвращает ЛОЖЬ. А на дике появляються файлы размером 0 байт.

Помогите пожалуйста

РЕШЕНИЕ здесь

Сообщение отредактировал Litkevich Yuriy - 13.3.2009, 16:49
Причина редактирования: РЕШЕНО
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
4 страниц V   1 2 3 > »   
Начать новую тему
Ответов (1 - 35)
ViGOur
  опции профиля:
сообщение 8.10.2008, 13:51
Сообщение #2


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Посмотри, что возвращает QImageReader::supportedImageFormats на твоей машине и на той, на которой не хочет работать...

Может просто еще нужен такой плагин как: qjpeg4.dll

Сообщение отредактировал ViGOur - 8.10.2008, 13:52
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Kostik_
  опции профиля:
сообщение 8.10.2008, 15:17
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 3
Регистрация: 8.10.2008
Пользователь №: 385

Спасибо сказали: 0 раз(а)




Репутация:   0  


Функиця QImageReader::supportedImageFormats() возвращает:

на ПК с QT:
Element: bmp
Element: gif
Element: ico
Element: jpeg
Element: jpg
Element: mng
Element: pbm
Element: pgm
Element: png
Element: ppm
Element: svg
Element: tif
Element: tiff
Element: xbm
Element: xpm

на ПК без Qt:
Element: bmp
Element: pbm
Element: pgm
Element: png
Element: ppm
Element: xbm
Element: xpm
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 8.10.2008, 15:23
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


у тебя плагины Qt'явые отсутсвуют, эта тема не раз поднималась на форуме, поищи тему "распространение программ" или что-то в этом роде

вот тема
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 8.10.2008, 15:24
Сообщение #5


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Тебе как я понимаю нужно перенсти на ПК без Qt фай qjpeg4.dll, посмотри в папке с Qt должен лежать...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Kostik_
  опции профиля:
сообщение 8.10.2008, 15:25
Сообщение #6


Новичок


Группа: Новичок
Сообщений: 3
Регистрация: 8.10.2008
Пользователь №: 385

Спасибо сказали: 0 раз(а)




Репутация:   0  


Подскажите, а как подключить плагин qjpeg4.dll? Я этот файл в папку с *.exe файлом закидывал. Программа все равно работать не хочет!
В QImage используеться именно этот файл?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 8.10.2008, 15:27
Сообщение #7


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Kostik_, см. мой пост, в папку с исполняемым файлом лучше не класть.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuler
  опции профиля:
сообщение 9.10.2008, 11:08
Сообщение #8


Танцор диско
***

Группа: Участник
Сообщений: 441
Регистрация: 11.9.2008
Из: Москва
Пользователь №: 289

Спасибо сказали: 6 раз(а)




Репутация:   -1  


Цитата(Litkevich Yuriy @ 8.10.2008, 16:27) *
Kostik_, см. мой пост, в папку с исполняемым файлом лучше не класть.

по идее длл в первую очередь ищутся в текущей папке
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 9.10.2008, 14:07
Сообщение #9


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Litkevich Yuriy прав. Лучше не путать необходимые qt dll-файлы и dll-файлы плагинов. Лучше их класть в папочку, например, Plugins, которая расположена в там же, где и исполняемый файл.

Желательно еще вот такой код в main.cpp добавить:
QString pluginsPath;
pluginsPath = qApp -> applicationDirPath() + QDir::separator() + "Plugins";
pluginsPath = pluginsPath.toLower();
qApp -> addLibraryPath(pluginsPath);
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 9.10.2008, 14:10
Сообщение #10


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(kuler @ 9.10.2008, 15:08) *
первую очередь ищутся в текущей папке
но не Qt плагины, их пути жестко заданы в нутри QtCore.dll и QtGui.dll

Цитата(AD @ 9.10.2008, 18:07) *
Желательно еще вот такой код в main.cpp добавить:
Это даже обязательно, если не используется иной способ объяснить Qt'я где что лежит, например, фалом qt.config.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuler
  опции профиля:
сообщение 13.3.2009, 16:19
Сообщение #11


Танцор диско
***

Группа: Участник
Сообщений: 441
Регистрация: 11.9.2008
Из: Москва
Пользователь №: 289

Спасибо сказали: 6 раз(а)




Репутация:   -1  


сделал как тут написано и как в теме, на которую тут ссылка дана - чото не работат, файл называется qjpeg1.dll.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 13.3.2009, 16:46
Сообщение #12


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(kuler @ 13.3.2009, 19:19) *
файл называется qjpeg1.dll.
ты цифру не перепутал?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuler
  опции профиля:
сообщение 13.3.2009, 16:49
Сообщение #13


Танцор диско
***

Группа: Участник
Сообщений: 441
Регистрация: 11.9.2008
Из: Москва
Пользователь №: 289

Спасибо сказали: 6 раз(а)




Репутация:   -1  


Цитата(Litkevich Yuriy @ 13.3.2009, 16:46) *
ты цифру не перепутал?

точно нет, с 4 нет длл, а на компе с кюте работает (там с 1)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 13.3.2009, 16:51
Сообщение #14


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(kuler @ 13.3.2009, 19:49) *
точно нет, с 4 нет длл,
цифра указывает версию Qt!

вот у меня:
H:\Qt\4.3.5_shared\plugins\imageformats\qjpeg4.dll
H:\Qt\4.3.5_shared\plugins\imageformats\qjpegd4.dll

H:\Qt\4.4.3\STD\plugins\imageformats\qjpeg4.dll
H:\Qt\4.4.3\STD\plugins\imageformats\qjpegd4.dll

H:\Qt\4.5.0_shared\plugins\imageformats\qjpeg4.dll
H:\Qt\4.5.0_shared\plugins\imageformats\qjpegd4.dll
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuler
  опции профиля:
сообщение 13.3.2009, 16:57
Сообщение #15


Танцор диско
***

Группа: Участник
Сообщений: 441
Регистрация: 11.9.2008
Из: Москва
Пользователь №: 289

Спасибо сказали: 6 раз(а)




Репутация:   -1  


Litkevich Yuriy, да, но ведь работает на моем компе
QApplication a(argc, argv);

    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("Windows-1251"));

    QStringList list_path;
  QDir dir = QDir(qApp->applicationDirPath()+"/Plugins/");
  list_path << dir.absolutePath () << qApp->libraryPaths ();
  qApp->setLibraryPaths( list_path  );

в папке с exe есть папка Plugins с dll

Сообщение отредактировал kuler - 13.3.2009, 17:00
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 13.3.2009, 17:01
Сообщение #16


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(kuler @ 13.3.2009, 19:57) *
да, но ведь работает на моем компе
вот это-то и странно, а что выводит команда, набери в комндной строке виндовоза:
qmake --version

весь вывод приведи
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuler
  опции профиля:
сообщение 13.3.2009, 17:04
Сообщение #17


Танцор диско
***

Группа: Участник
Сообщений: 441
Регистрация: 11.9.2008
Из: Москва
Пользователь №: 289

Спасибо сказали: 6 раз(а)




Репутация:   -1  


4.2.2
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 13.3.2009, 17:26
Сообщение #18


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(kuler @ 13.3.2009, 20:04) *
4.2.2
это не весь вывод
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuler
  опции профиля:
сообщение 13.3.2009, 18:09
Сообщение #19


Танцор диско
***

Группа: Участник
Сообщений: 441
Регистрация: 11.9.2008
Из: Москва
Пользователь №: 289

Спасибо сказали: 6 раз(а)




Репутация:   -1  


qmake versiion 2.01a
using qt version 4.2.2 in c:/....
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 13.3.2009, 19:14
Сообщение #20


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(kuler @ 13.3.2009, 21:09) *
4.2.2 in c:/....
ну и куда он там показывает?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuler
  опции профиля:
сообщение 13.3.2009, 19:33
Сообщение #21


Танцор диско
***

Группа: Участник
Сообщений: 441
Регистрация: 11.9.2008
Из: Москва
Пользователь №: 289

Спасибо сказали: 6 раз(а)




Репутация:   -1  


Litkevich Yuriy, с/qt/4.2.2/lib
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 13.3.2009, 20:19
Сообщение #22


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(kuler @ 13.3.2009, 22:33) *
с/qt/4.2.2/lib
поидее в этом каталоге все имена должны закначиватся на 4 и в подкаталогах с/qt/4.2.2/plugins тоже
покажи список файлов каталогах:
с/qt/4.2.2/plugins/sqldrivers
с/qt/4.2.2/plugins/imageformats

прям всех файлов какие есть.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuler
  опции профиля:
сообщение 16.3.2009, 11:06
Сообщение #23


Танцор диско
***

Группа: Участник
Сообщений: 441
Регистрация: 11.9.2008
Из: Москва
Пользователь №: 289

Спасибо сказали: 6 раз(а)




Репутация:   -1  


вот
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 16.3.2009, 11:47
Сообщение #24


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


очень странно, это у тебя комерческая версия?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuler
  опции профиля:
сообщение 16.3.2009, 12:06
Сообщение #25


Танцор диско
***

Группа: Участник
Сообщений: 441
Регистрация: 11.9.2008
Из: Москва
Пользователь №: 289

Спасибо сказали: 6 раз(а)




Репутация:   -1  


да
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuler
  опции профиля:
сообщение 16.3.2009, 17:09
Сообщение #26


Танцор диско
***

Группа: Участник
Сообщений: 441
Регистрация: 11.9.2008
Из: Москва
Пользователь №: 289

Спасибо сказали: 6 раз(а)




Репутация:   -1  


Цитата(Litkevich Yuriy @ 9.10.2008, 14:10) *
их пути жестко заданы в нутри QtCore.dll и QtGui.dll

это же задается к примеру в main.cpp

где надыбать этот qjpeg4.dll?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 16.3.2009, 17:54
Сообщение #27


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(kuler @ 16.3.2009, 20:09) *
это же задается к примеру в main.cpp
если ты не задал явно пути, то буду братся те что жестко зашиты в QtCore (насчёт QtGui я наврал).
Пути берутся из QLibraryInfo, тест:
#include <QCoreApplication>
#include <QDebug>
#include <QLibraryInfo>

int main(int argc, char *argv[])
{
  QCoreApplication app(argc, argv);
    
    qDebug() << "buildKey:" << QLibraryInfo::buildKey();
    qDebug() << "\n";
    qDebug() << "location - PrefixPath:" << QLibraryInfo::location(QLibraryInfo::PrefixPath);
    qDebug() << "location - LibrariesPath:" << QLibraryInfo::location(QLibraryInfo::LibrariesPath);
    return 0;
}
скомпилируй,
1) запусти в командной строке и посмотри вывод
2) положи в каталог с бинарем пустой текстовый файл qt.conf, запусти в командной строке и посмотри вывод
3) добавь в файл qt.conf такие строчки:
[Paths]
Prefix = C:\\myQtVersion
запусти в командной строке и посмотри вывод.

Цитата(kuler @ 16.3.2009, 20:09) *
где надыбать этот qjpeg4.dll?
ну попроси у кого-нибудь, AD и ViGOur помоему испольуют комерческую версию
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuler
  опции профиля:
сообщение 16.3.2009, 18:37
Сообщение #28


Танцор диско
***

Группа: Участник
Сообщений: 441
Регистрация: 11.9.2008
Из: Москва
Пользователь №: 289

Спасибо сказали: 6 раз(а)




Репутация:   -1  


Цитата(Litkevich Yuriy @ 16.3.2009, 17:54) *
если ты не задал явно пути, то буду братся те что жестко зашиты в QtCore

так к плагину где путь зашитый? и почему в зависимостях нет этой длл?

аааааа! ну вот и нашел собссноо
Anyway, if you want to use QJPEG plugin on a system where Qt isn't installed, just create a imageformats subdirectory in the directory where your executable is and place qjpeg1.dll there. Сработало!!

Сообщение отредактировал kuler - 16.3.2009, 18:42
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Fandorin
  опции профиля:
сообщение 26.4.2010, 13:02
Сообщение #29


Студент
*

Группа: Новичок
Сообщений: 10
Регистрация: 19.4.2010
Пользователь №: 1642

Спасибо сказали: 0 раз(а)




Репутация:   0  


Ребят, помогите. Сделал все, как вы говорите. В папку с *.exe положил папку plugins. Добавил путь (\plugins) в main.cpp. Мне также нужно чтобы была поддержка JPEG. Однако, все равно не получается. :(

Anyway, if you want to use QJPEG plugin on a system where Qt isn't installed, just create a imageformats subdirectory in the directory where your executable is and place qjpeg1.dll there. Сработало!!

Так тоже пробовал.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Fandorin
  опции профиля:
сообщение 26.4.2010, 14:07
Сообщение #30


Студент
*

Группа: Новичок
Сообщений: 10
Регистрация: 19.4.2010
Пользователь №: 1642

Спасибо сказали: 0 раз(а)




Репутация:   0  


Открыл в QT creator закладку "Справка->О модулях..." и там никакого qjpeg нету. Добавляю в .pro файл
QTPLUGIN     += qjpeg
и в main.cpp
 Q_IMPORT_PLUGIN(qjpeg)
- не компилируется - пишет ошибку "collect2: ld returned 1 exit status". Может это все потому что у меня не коммерческая версия?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 26.4.2010, 15:59
Сообщение #31


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Fandorin @ 26.4.2010, 18:07) *
Открыл в QT creator закладку "Справка->О модулях..."
ну если они креатору не нужны то их там и не будет

Fandorin, указывать плагин, так как ты это сделал нужно только для статической сборки.

Собственно что у тебя не получается / не работает?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Fandorin
  опции профиля:
сообщение 26.4.2010, 20:34
Сообщение #32


Студент
*

Группа: Новичок
Сообщений: 10
Регистрация: 19.4.2010
Пользователь №: 1642

Спасибо сказали: 0 раз(а)




Репутация:   0  


Не получается подключить поддержку JPEG на "безQTшной" платформе. Все работает, однако JPG не обрабатывается. Мне просто не совсем ясно как это сделать. Пусть нужно подключить jpeg плагин к какому нибудь любому проекту и перенести на другую платформу. Как это сделать? :rolleyes:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 27.4.2010, 1:31
Сообщение #33


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Fandorin @ 27.4.2010, 0:34) *
Пусть нужно подключить jpeg плагин к какому нибудь любому проекту и перенести на другую платформу. Как это сделать?
для плагинов при динмаческой сборке Qt (т.е. с dll'ками), нужно только это, больше никаких действий не требуется.
jpeg'ом я не пользуюсь, по этому именно его не проверял. SVG, PNG и SQL-драйверы работают без проблем
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Fandorin
  опции профиля:
сообщение 27.4.2010, 10:01
Сообщение #34


Студент
*

Группа: Новичок
Сообщений: 10
Регистрация: 19.4.2010
Пользователь №: 1642

Спасибо сказали: 0 раз(а)




Репутация:   0  


Заработало. Просто папку "imageformats" закинул в папку с исполняемым файлом и компилировал в release режиме. :rolleyes:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
efg
  опции профиля:
сообщение 19.8.2011, 15:01
Сообщение #35


Студент
*

Группа: Участник
Сообщений: 48
Регистрация: 6.5.2011
Пользователь №: 2658

Спасибо сказали: 2 раз(а)




Репутация:   0  


оой, у меня теперь то же самое :unsure:
qt 4.7.3
сохраняю вот так: image->save((const QString)"image_new."+fileInfo.completeSuffix(),fileInfo.completeSuffix().toAscii(),-1);
с png всё ок, jpg и gif не прокатывают и всё тут. никаких файлов, даже пустых, не создаётся

> Просто папку "imageformats" закинул в папку с исполняемым файлом и компилировал в release режиме
> Желательно еще вот такой код в main.cpp добавить:
пробовал
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
efg
  опции профиля:
сообщение 20.8.2011, 16:21
Сообщение #36


Студент
*

Группа: Участник
Сообщений: 48
Регистрация: 6.5.2011
Пользователь №: 2658

Спасибо сказали: 2 раз(а)




Репутация:   0  


на худой конец решил конвертить всё прочитанное в пнг. так ведь нет - оказывается, жпг ещё и читаться не хочет, блин. при том, что на этой же системе статическая сборка qt 4.7.0 нормально работала с жпг, добавленными в .qrc

*** извиняюсь, всё заработало :-)

Сообщение отредактировал efg - 20.8.2011, 16:25
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

4 страниц V   1 2 3 > » 
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 27.2.2025, 14:49