Войти
ПрограммированиеФорумОбщее

Проблема чтения файлов на Linux

#0
21:24, 7 авг. 2019

У меня есть редактор на Qt. https://github.com/leonardo98/2dgamedesigner

Предназначен для редактирования файлов уровней и интерфейса. При своей работе открывает файлы в папке игры и манипулирует ими.
Решил допилить его, чтобы работал на Linux Mint.

Все отлично работало на Windows и MacOS, но в Linux некоторые файлы PNG НЕ открывает, подозреваю что проблема может быть в правах доступа.
Файлы читаю через
  QImage mySurface(fileName);
PNG существует, но mySurface не валиден. Причем некоторые файлы все таки читаются. Проект отрываю тот же, что открывал на MacOS и Windows, т.е. пути к файлам все 100% рабочие. Сейчас в репозитории github реализовано через смену текущего каталога и чтение по относительным путям, попробовал допилить чтение по полному пути вида "/home/[username]/Documents/Project/develop/image.png"- тот же результат.

Может, кто что подскажет? в Linux я совсем новичок.


#1
0:20, 8 авг. 2019

Проверил у себя архив с примером, вроде бы все загрузилось. Была только проблема с тем что некоторые файлы имеют "/Dropbox/" в пути:

ed2 | Проблема чтения файлов на Linux

Но после исправления пути в .xml заработало (насколько я могу судить):

ed1 | Проблема чтения файлов на Linux

Система Ubuntu 16, Qt5 - тот что у них в репозиториях лежит.

#2
5:10, 8 авг. 2019

Линукс файловая система регистрозависимая. Вин и Макося по-умолчанию нет

#3
(Правка: 7:04) 7:04, 8 авг. 2019

leonardo98
> подозреваю что проблема может быть в правах доступа.
> Может, кто что подскажет? в Linux я совсем новичок.
Нужно не подозревать, а проверять код ошибки.

#4
(Правка: 9:53) 9:39, 8 авг. 2019

Apfel1994
спасибо за ресеч, я тестирую на другом проекте, там используется графика, которую я не могу выкладывать в публичный доступ.
тем не менее у вас явно нет той проблемы, что есть у меня, к примеру, спрайты точек у меня так же не загружаются,
screenshot_from_2019-08-07_22-53-022 | Проблема чтения файлов на Linux
та же ошибка - QImage invalid, хотя они вообще относятся к самому редактору

skalogryz
проверил это, пути корректные, сравнивал с помощью ImageViewer - там есть удобный пункт "Copy Location"

exchg
> Нужно не подозревать, а проверять код ошибки.
QImage не дает кода ошибки, по крайней мере, я не нашел ничего подобного, если знаете как это сделать, напишите, пожалуйста

update: проверил через fopen() открывает на чтение (именно те файлы, которые не открывает QImage)

#5
14:00, 8 авг. 2019

leonardo98
> QImage не дает кода ошибки, по крайней мере, я не нашел ничего подобного, если
> знаете как это сделать, напишите, пожалуйста
Неа, не знаю точно. Но у них должен быть как-то штатный механизм обработки ошибок, кроме эксепшинов.
Из того о чем догадался, можно грузить не из QImage::filename, а из QIODevice::QFile и там (Qfile::error() + QFile::errorString()) смотреть подробней, что не так.

> update: проверил через fopen() открывает на чтение (именно те файлы, которые не
> открывает QImage)
Значит наверное права в норме.

#6
21:26, 8 авг. 2019

leonardo98
> QImage не дает кода ошибки, по крайней мере, я не нашел ничего подобного, если
> знаете как это сделать, напишите, пожалуйста
1) тогда укажи формат явно. у тебя все файлы .PNG, сделай его хардкодным форматом.
2) покажи .png файлы которые не грузятся на linux-е. (вдруг они на самом деле .bmp с ужим расширением)

#7
9:20, 9 авг. 2019

skalogryz
sprites | Проблема чтения файлов на Linux

#8
(Правка: 20:26) 16:37, 9 авг. 2019

https://stackoverflow.com/questions/22745076/libpng-warning-iccp-… -srgb-profile

если кратко - warning стал интерпретироваться как error, поэтому в новых версиях Qt файлы с проблемным профилем не загружались, linux не причем, png файлы лечатся утилиткой

#9
16:06, 15 авг. 2019

leonardo98
> в Linux я совсем новичок.
регистр символов совпадает в пути и в реальности? В Linux это важно

#10
16:06, 15 авг. 2019

Может у тебя файлы .PNG, а ты пытаешься читать .png

ПрограммированиеФорумОбщее