C ++ Импорт и переименование / восстановление изображения - PullRequest
2 голосов
/ 29 июня 2010

Привет всем, В настоящее время я учусь на втором курсе (по специальности CS), и этим летом я пытаюсь научить себя C ++ (мои школьные коды в основном на Java). Я прочитал много руководств по C ++ и получил часть от ofstream, сохраняя и редактируя .txt файлы. Теперь я заинтересован в простом импорте изображения (JPEG, растровое изображение, не очень важно) и переименовании вышеупомянутого изображения. Я гуглил, расспрашивал, но безрезультатно. Возможен ли этот процесс без загрузки внешних библиотек (я назвал CImg)? Будем очень благодарны за любые советы или подсказки, как ускорить достижение моей цели

Ответы [ 3 ]

2 голосов
/ 29 июня 2010

Переименование изображения обычно аналогично переименованию любого другого файла.

Если вы хотите сделать больше, вы можете также изменить данные в поле Заголовок метаданных IPTC .Это не требует декодирования JPEG или чего-то подобного - вам нужно знать формат файла достаточно хорошо, чтобы иметь возможность находить метаданные IPTC, и изучать формат IPTC достаточно хорошо, чтобы найти поле заголовка,но это всеТо, как вы попадете в метаданные IPTC, будет различным - навигация по TIFF (для одного примера) сама по себе требует большого количества кода.

1 голос
/ 29 июня 2010

Когда вы говорите «переименование вышеупомянутого изображения», вы имеете в виду изменение метаданных в файле изображения или просто изменение имени файла? Если вы имеете в виду метаданные, то вам нужно либо понять формат файла, либо использовать библиотеку, которая понимает формат файла. Это будет отличаться для каждого типа файла изображения. Если вы просто хотите скопировать файл, вы можете либо передать содержимое из одного файлового потока в другой, либо использовать API файловой системы.

std::ifstream infs("input.txt", std::ios::binary);
std::ofstream outfs("output.txt", std::ios::binary);
outfs << insfs.rdbuf();

Примером API файловой системы является CopyFile на Win32.

0 голосов
/ 29 июня 2010

Это возможно без библиотек - вам просто нужны спецификации изображения и 'C', вопрос в том, почему?

Возможно, Targa или bmp самые простые, это просто заголовок и данные изображения в виде двоичного блоказначений.
Gif, jpeg и png более сложные - данные сжимаются

...