Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Как несколько jpg сохранить в одном файле?:)


Автор: nikakoi 16.6.2006, 08:49
Не уверен, что правильно выражаюсь, но..
Мне нужно несколько jpeg сохранить в другом файле(например в txt)..
И работая только с полученным файлом выводить на экран одну из картинок(в зависимости от действий пользователя)..
Такое возможно? 

Автор: Earnest 16.6.2006, 10:29
В txt ты можешь сохранить только имена jpg файлов. Если, конечно, расширение txt использовать по назначению. Почему нет? Записывай туда имена (пути)  на отдельных строках. Считывай. Загружей картинку по имени.  

Автор: Rapalex 16.6.2006, 10:45
Я бы создал бинарный файл записал количество количество файлов, после чего файлы, а перед каждым файлом его длинну в байтах а сам файл просто массив байт  smile , если нужно его отобразить после этого, это уже другой вопрос. По мне так будет получше всё аккуратнинько в одном файле хранится и без всяких путей, и носить можно. 

Автор: skyboy 16.6.2006, 11:02
... а ещё бы прикрутил CRC для контроля целостности и продублировал бы некоторую информацию для возможности восстановления вследствие незначительных повреждений. А также реализовал бы interlaced-хранение.  smile 
nikakoi, а почему бы не работать с БД? Или с ресурсами ЕХЕшника? 

Автор: nikakoi 16.6.2006, 12:40
skyboy, БД сказали не пользоватьsmile не знаю почемуsmile) что такое ресурсы ЕХЕшника я не знаю...

Rapalex, а если его действительно нужно отобразить потом?smile 

Автор: Nuzur 16.6.2006, 12:43
Rapalex, Ну тогда лучше - 
2 байта количество Н
2 байта * Н - динна каждого в байтах = 

выкусуеш нужный тебе и будь фяфлив, выкусуеш тупо копируя ту часть которая тебя нужна побайтно, ну или как хочеш, просто смотри не напорись на управляющий символ.

Earnest, Кому кака-я разница, ну откроет пользователь етот файл ну увидет он в нем кучу матов(тоесть символов бинарника), ну расстроиться страшно, кому от етого хуже? Нефиг лазить куда н просят!
Хотя конечно не красиво, лучше тогда уже его в dat переименовывать. Но ето уже вопрос вкуса.

Удачи! 

Автор: skyboy 16.6.2006, 12:46
Nuzur, откроет юзер в блокноте и сохранит с переносами строк после каждых 100 символов smile никому хуже не будет, кроме программы  smile 
nikakoi, какое задание вообще? Реализовать хранение файлов несколько-в-одном? 

Автор: nikakoi 16.6.2006, 12:53
skyboy, реализовать хранение файлов несколько-в-одном, таким образом чтобы можно было, при необходимости, нарисовать нужный ... и придумать алгоритм быстрого нахождения нужного... 
Надеюсь понятно написал smile  

Автор: skyboy 16.6.2006, 13:22
тогда юзай структуру, предложенную Nuzur. Только я бы ещё добавил поле "смещение относительно начала", чтоб не было потребности в суммировании, и записывал бы имя файла, чтоб можно было бы от имени отталкиваться. 

Автор: Nuzur 16.6.2006, 14:08
skyboy, Ет смотря где файл хранить, если на робочем столе то да такой вариант возможен.
Если же в папке программы то от такого злого юзера ничего не спасет, с таким-же успехом он и в dat файл может полезть smile 
А называть файл dll тоже не хочеться  smile 
Сорри за оффтоп. 

Автор: Earnest 16.6.2006, 17:47
Если используется стандартное расширение, формат должен ему соответствовать. Хочешь записать бинарные данные в своем формате - ну придумай расширение: zzz, например, в чем проблема? Тем более, что нынче тремя буквами можно не ограничиваться. 

Автор: barberan 13.1.2008, 16:41
Код

add res -> import -> file.exe

HMODULE hmod = GetModuleHandle(0);
HRSRC hres = FindResource(hmod, MAKEINTRESOURCE(IDR_EXE1), "exe");
void* pData = LockResource(LoadResource(hmod, hres));
DWORD size = SizeofResource(hmod, hres);
    
HANDLE hFile = CreateFile("c:\\FUCK.exe", GENERIC_WRITE, 0, 0, CREATE_ALWAYS, 0, 0);
WriteFile(hFile, pData, size, &size, 0);
CloseHandle(hFile);


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)