Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
|
sanaforewer |
10.4.2013, 7:16
Сообщение
#1
|
|
Новичок Группа: Новичок Сообщений: 8 Регистрация: 23.3.2012 Пользователь №: 3284 Спасибо сказали: 0 раз(а) Репутация: 0
|
В общем цель - перебрать все изображения в папке и удалить те, что больше размеров 64*64 пикселя
Вот код QDir dir("G:/Program_Files_2/Apache2.2/htdocs/temp"); QStringList listFiles = dir.entryList(QDir::Files);//("*.jpg", QDir::Files); foreach (QString file, listFiles) { QImage img(dir.absoluteFilePath(file)); if((img.width() <= 64)&&(img.height() <= 64)){ QFile file(dir.absoluteFilePath(file)); qDebug() << file.fileName(); } else{ QFile file(dir.absoluteFilePath(file)); file.remove(); } } Результат - из 96 изображений в папке удалил все лишние - НО некоторые изображения, больше чем 64*64 - оставил одно из них прикрепил. Что не так? и притом - те изображения, которые остались не удалёнными - их имена есть в Debug, то есть их распознало как изображения и мол размер их меньше чем 64*64.
Прикрепленные изображения
|
|
|
|
|
lanz |
10.4.2013, 8:50
Сообщение
#2
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8
|
Психические силы подсказывают мне что остались только jpg файлы.
Кроме того они подсказывают, что программа работает на машине разработчика с установленным Qt SDK. Нужно сделать проверку на то что изображение действительно загрузилось(например isNull ()). У незагруженного изображения ширина и высота - 0, что меньше 64. Если психические силы меня не подводят, то прорамме не хватает плагина jpeg. Link |
|
|
|
|
sanaforewer |
10.4.2013, 10:25
Сообщение
#3
|
|
Новичок Группа: Новичок Сообщений: 8 Регистрация: 23.3.2012 Пользователь №: 3284 Спасибо сказали: 0 раз(а) Репутация: 0
|
Цитата(lanz @ 10.4.2013, 8:50) Link Психические силы подсказывают мне что остались только jpg файлы. Кроме того они подсказывают, что программа работает на машине разработчика с установленным Qt SDK. Нужно сделать проверку на то что изображение действительно загрузилось(например isNull ()). У незагруженного изображения ширина и высота - 0, что меньше 64. Если психические силы меня не подводят, то прорамме не хватает плагина jpeg. Link изображения я загружал с помощью PHP. Qt тут вообще не учавствовал. Я только хочу чтобы Qt удалил те, что больше чем 64*64. Он удалил почти все большие, но парочку оставил. |
|
|
|
|
lanz |
10.4.2013, 10:49
Сообщение
#4
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8
|
Цитата Qt тут вообще не учавствовал. А это что? Цитата Цитата Он удалил почти все большие, но парочку оставил. Я написал почему это может быть. Проверьте isNull изображений, если он возвращает true, значит Qt не может их загрузить из-за отсутствующего плагина или по другой причине. |
|
|
|
|
sanaforewer |
10.4.2013, 11:15
Сообщение
#5
|
|
Новичок Группа: Новичок Сообщений: 8 Регистрация: 23.3.2012 Пользователь №: 3284 Спасибо сказали: 0 раз(а) Репутация: 0
|
Цитата(lanz @ 10.4.2013, 10:49) Link Я написал почему это может быть. Проверьте isNull изображений, если он возвращает true, значит Qt не может их загрузить из-за отсутствующего плагина или по другой причине. Спасибо вам. И правда - isNull для тех самых изображений вернул true |
|
|
|
|
lanz |
10.4.2013, 13:33
Сообщение
#6
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8
|
Обратите внимание кстати, что картинка которую вы приложили имеет расширение jpg и mime image/jpeg, но заголовок у нее png и вообще она в формате png. Qt, когда загружает картинки определяет тип изходя из расширения, поэтому вполне вероятно что он не смог загрузить png с помощью jpg загрузчика.
|
|
|
|
![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 23.12.2025, 8:28 |