2010-06-29 2 views
2

안녕하세요. 현재 저는 상승중인 Sophomore (CS 전공)입니다. 이번 여름에 저는 C++ (주로 자바로 된 학교 코드)를 가르치려고합니다. C++에 대한 많은 가이드를 읽었으며 ofstream, 저장 및 편집 .txt 파일로 부분을 차지했습니다. 이제 간단히 이미지 (jpeg, 비트 맵, 정말로 중요하지 않음)를 가져 와서 위에서 언급 한 이미지의 이름을 바꾸는 데 관심이 있습니다. 나는 봤지만 주위에 물었다. 아무 소용이 없다. 외부 라이브러리를 다운로드하지 않고도이 프로세스를 수행 할 수 있습니까? 내 목표를 신속히 처리하는 방법에 대한 힌트 또는 팁은 많이 감사하겠습니다.C++ 이미지 가져 오기 및 이름 바꾸기/이미지 다시 작성

+0

라이브러리를 사용하십시오. 파일 스펙을 기반으로 jpeg 리더를 작성하는 것은 그리 쉬운 일이 아닙니다. 형식을 사용할 수 있다면 TGA는 매우 쉽습니다. – stinky472

답변

2

이미지의 이름을 바꾸는 것은 일반적으로 다른 파일의 이름을 바꾸는 것과 거의 같습니다.

이상을 원할 경우 IPTC metadata의 제목 필드에서 데이터를 변경할 수도 있습니다. 이것은 이 아니며은 JPEG 디코딩이 필요합니다. IPTC 메타 데이터를 찾을 수있을 정도로 파일 형식을 충분히 알고 있어야하며 Title 필드를 찾기에 충분히 IPTC 형식을 연구해야합니다.하지만 그게 전부입니다 . 정확하게 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의 예는 Win32의 CopyFile입니다.

관련 문제