Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219

Просмотреть директорию с картинками jpeg, узнать сколько там файлов и по одному загрузить их в массив

26.08.2016, 09:24. Показов 685. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, помогите, пожалуйста, разобраться. Такая задача: есть некая директория, где лежат картинки jpeg. Нужно просмотреть эту директорию, узнать сколько там файлов и по одному загрузить в массив байт. Массив не двумерный, как везде есть, и картинка не bmp.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.08.2016, 09:24
Ответы с готовыми решениями:

В зависимости от того, сколько файлов уже было загружено, определить директорию, куда загружать новый
В БД есть 3 колонки: file_new, file_new2 и file_new3. Если в file_new пусто, то файл грузится сюда. Если в file_new уже есть файл, то...

Массив. Сколько раз попадается там заданное число?
Ребята, привет! Очнеь стыдно, но попросили помочь... Проблема в том, что я массивы сам задавал, а не читал с файла! В итоге задача...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Модератор
 Аватар для vxg
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,460
26.08.2016, 09:35
ExFau$t, какая разница что в файле если вы просто откроете его и прочитаете в вектор?

Добавлено через 2 минуты
C++
1
2
3
4
FILE *f = fopen(file_name, "rb");
BYTE buffer[100000];
fread(buffer, 100000, 1, f);
fclose(f);
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
26.08.2016, 09:50  [ТС]
vxg, ну а как "проканировать" директорию, чтобы узнать количество, размеры и имена файлов?
0
1617 / 1182 / 553
Регистрация: 08.01.2012
Сообщений: 4,561
26.08.2016, 10:00
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    setlocale(LC_ALL, "Russian");
    char path[100]="C:\\Documents and Settings\\Администратор\\Рабочий стол";
    //cout<<"Путь: \n";
    //gets_s(path,100);
    WIN32_FIND_DATA inf;
    HANDLE hnd;
    if(SetCurrentDirectoryA(path))
    {
        if(hnd=FindFirstFileA("*.jpg",(LPWIN32_FIND_DATAA)&inf))
        do
            if(!(inf.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
            {
                cout<<(LPCSTR)inf.cFileName<<endl;
                //..........................
            }
        while(FindNextFileA(hnd,(LPWIN32_FIND_DATAA)&inf));
        FindClose(hnd);
    }
    system("pause");
1
Модератор
 Аватар для vxg
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,460
26.08.2016, 10:12
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    ffblk rec;
 
    std::string target = folder + '\\' + filter;
    for
    (
        int founded = findfirst(target.c_str(), &rec, FA_NORMAL);
        !founded;
        founded = findnext(&rec)
    )
    {
        if (rec.ff_name[0] != '.' && rec.ff_attrib ^ FA_DIREC)
        {
            struct stat si;
            if (stat(rec.ff_name, &si))
            {
                //что-то пошло не так
            }
            else
            {
                //размер тут - si.st_size
            }
        }
    }
    findclose(&rec);
1
 Аватар для ASCII
99 / 70 / 13
Регистрация: 15.12.2013
Сообщений: 463
26.08.2016, 10:48
vxg, Это вообще что? Псевдокод?
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
26.08.2016, 10:52  [ТС]
Да, это почти то, что нужно, спасибо.
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
27.08.2016, 13:00  [ТС]
Подскажите ещё, мне этот массив надо перевести в Base64 для последующей передачи, но в System::Convert::ToBase64String(buffer) не могу сообразить как byte[] или char перевести в array<unsigned char,1>^ , а после получения String^ не пойму почему json её не берёт:

Ошибка 15 error C2664: rapidjson::GenericValue<Encoding>::Gener icValue(rapidjson::GenericValue<Encoding > &&): невозможно преобразовать параметр 1 из "System::String ^" в "rapidjson::GenericValue<Encoding> &&"

Добавлено через 8 минут
То есть порядок действий такой - считать из файла, перевести в Base64, засунуть в json. Пока что получается между каждым действием приходится вставлять конвертер.

Добавлено через 25 минут
На данный момент сделал так:
C++
1
2
3
4
5
6
7
8
9
10
long fsize;
FILE *f = fopen((LPCSTR)inf.cFileName, "rb");
fsize = filelength(fileno(f));
char *buffer = NULL;
buffer = (char*)malloc(fsize);
fread(buffer, fsize, 1, f);
fclose(f);
array<Byte>^ data = gcnew array<Byte>(fsize);
System::Runtime::InteropServices::Marshal::Copy(IntPtr(&buffer), data, 0, fsize);
System::String^ base64 = System::Convert::ToBase64String(data);
Добавлено через 8 минут
& - перед buffer лишний
0
Модератор
 Аватар для vxg
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,460
27.08.2016, 13:24
ExFau$t, у вас такой порядок действий потому что вы не в C++ а в управляемом коде пишите
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
27.08.2016, 13:54  [ТС]
vxg, эстетику я потом наведу, мне надо сделать и быстро.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru