Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
ExFau$t
55 / 55 / 4
Регистрация: 08.05.2012
Сообщений: 448
26.08.2016, 09:24     Просмотреть директорию с картинками jpeg, узнать сколько там файлов и по одному загрузить их в массив #1
Здравствуйте, помогите, пожалуйста, разобраться. Такая задача: есть некая директория, где лежат картинки jpeg. Нужно просмотреть эту директорию, узнать сколько там файлов и по одному загрузить в массив байт. Массив не двумерный, как везде есть, и картинка не bmp.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.08.2016, 09:24     Просмотреть директорию с картинками jpeg, узнать сколько там файлов и по одному загрузить их в массив
Посмотрите здесь:

Как компилятору указать директорию заголовочных файлов. C++
C++ Узнать директорию пользователя
C++ Выяснить, сколько чисел входит в последовательность более чем по одному разу
Выяснить, сколько чисел входит в последовательность по одному разу C++
C++ Как программно сжать директорию или несколько файлов?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vxg
Модератор
 Аватар для vxg
2659 / 1670 / 156
Регистрация: 13.01.2012
Сообщений: 6,215
26.08.2016, 09:35     Просмотреть директорию с картинками jpeg, узнать сколько там файлов и по одному загрузить их в массив #2
ExFau$t, какая разница что в файле если вы просто откроете его и прочитаете в вектор?

Добавлено через 2 минуты
C++
1
2
3
4
FILE *f = fopen(file_name, "rb");
BYTE buffer[100000];
fread(buffer, 100000, 1, f);
fclose(f);
ExFau$t
55 / 55 / 4
Регистрация: 08.05.2012
Сообщений: 448
26.08.2016, 09:50  [ТС]     Просмотреть директорию с картинками jpeg, узнать сколько там файлов и по одному загрузить их в массив #3
vxg, ну а как "проканировать" директорию, чтобы узнать количество, размеры и имена файлов?
MansMI
1046 / 843 / 205
Регистрация: 08.01.2012
Сообщений: 3,023
26.08.2016, 10:00     Просмотреть директорию с картинками jpeg, узнать сколько там файлов и по одному загрузить их в массив #4
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");
vxg
Модератор
 Аватар для vxg
2659 / 1670 / 156
Регистрация: 13.01.2012
Сообщений: 6,215
26.08.2016, 10:12     Просмотреть директорию с картинками jpeg, узнать сколько там файлов и по одному загрузить их в массив #5
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);
ASCII
 Аватар для ASCII
82 / 54 / 8
Регистрация: 15.12.2013
Сообщений: 369
Завершенные тесты: 2
26.08.2016, 10:48     Просмотреть директорию с картинками jpeg, узнать сколько там файлов и по одному загрузить их в массив #6
vxg, Это вообще что? Псевдокод?
ExFau$t
55 / 55 / 4
Регистрация: 08.05.2012
Сообщений: 448
26.08.2016, 10:52  [ТС]     Просмотреть директорию с картинками jpeg, узнать сколько там файлов и по одному загрузить их в массив #7
Да, это почти то, что нужно, спасибо.
ExFau$t
55 / 55 / 4
Регистрация: 08.05.2012
Сообщений: 448
27.08.2016, 13:00  [ТС]     Просмотреть директорию с картинками jpeg, узнать сколько там файлов и по одному загрузить их в массив #8
Подскажите ещё, мне этот массив надо перевести в Base64 для последующей передачи, но в System::Convert::ToBase64String(buffer) не могу сообразить как byte[] или char перевести в array<unsigned char,1>^ , а после получения String^ не пойму почему json её не берёт:

Ошибка 15 error C2664: rapidjson::GenericValue<Encoding>::GenericValue(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 лишний
vxg
Модератор
 Аватар для vxg
2659 / 1670 / 156
Регистрация: 13.01.2012
Сообщений: 6,215
27.08.2016, 13:24     Просмотреть директорию с картинками jpeg, узнать сколько там файлов и по одному загрузить их в массив #9
ExFau$t, у вас такой порядок действий потому что вы не в C++ а в управляемом коде пишите
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.08.2016, 13:54     Просмотреть директорию с картинками jpeg, узнать сколько там файлов и по одному загрузить их в массив
Еще ссылки по теме:

C++ Массив. Сколько раз попадается там заданное число?
C++ Тело POST запроса. Как самому узнать, что там должно быть?
Как одному классу узнать о другом в другом файле, если они не имеют общего наследования C++

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

Или воспользуйтесь поиском по форуму:
ExFau$t
55 / 55 / 4
Регистрация: 08.05.2012
Сообщений: 448
27.08.2016, 13:54  [ТС]     Просмотреть директорию с картинками jpeg, узнать сколько там файлов и по одному загрузить их в массив #10
vxg, эстетику я потом наведу, мне надо сделать и быстро.
Yandex
Объявления
27.08.2016, 13:54     Просмотреть директорию с картинками jpeg, узнать сколько там файлов и по одному загрузить их в массив
Ответ Создать тему
Опции темы

Текущее время: 02:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru