2010-06-29 3 views
2

Приветствую всех, Я в настоящее время являюсь восходящим Sophomore (CS major), и этим летом я пытаюсь научить себя C++ (мои школьные коды в основном на Java). Я прочитал много руководств на C++ и получил часть с потоком, сохраняя и редактируя TXT-файлы. Теперь меня интересует просто импорт изображения (jpeg, bitmap, не очень важно) и переименование вышеупомянутого изображения. У меня есть googled, спросил вокруг, но безрезультатно. Этот процесс возможен без загрузки внешних библиотек (я выбрал CImg)? Любые подсказки или советы по ускорению моей цели были бы очень благодарныC++ Импорт и переименование/сохранение изображения

+0

Используйте библиотеки для этого. Написание jpeg-ридера на основе спецификаций файлов вовсе не тривиально. Если вы можете использовать любой формат, то TGA довольно легко. – stinky472

ответ

2

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

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

0

Возможно без библиотек - вам просто нужны спецификации изображений и «C», вопрос в том, почему?

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

1

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

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

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

Смежные вопросы