편집 :파일이 전체 파일을로드하지 않고 이미지인지 아닌지 확인하는 방법은 무엇입니까? 이미지 헤더 읽기 라이브러리가 있습니까?
죄송합니다. 제 질문은 모호합니다. 파일이 이 아닌지 확인하는 방법이 필요합니다. 이미지를로드하는 데 시간을 낭비하지 않고 이미지를로드해야합니다. 그 이유는 나중에 나머지로드 작업을 수행 할 수 있기 때문입니다. 파일 확장명을 확인하고 싶지 않습니다.
응용 프로그램은 이미지를 봅니다. '유효성 검사'를 통해 '비 이미지 파일 탐지 및 건너 뛰기'를 해당 디렉토리에서도 의미합니다. 픽셀 데이터가 손상된 경우이를 이미지로 취급하고 싶습니다.
페이지 번호를 지정하고 이미지를 쌍으로 만듭니다. 일부 이미지는 왼쪽 또는 오른쪽 단일 페이지입니다. 일부 이미지는 넓으며 왼쪽 및 오른쪽 페이지의 "확산"입니다. 예를 들어, pagesAt (3) 및 pagesAt (4)는 동일한 std :: 이미지 쌍 또는 동일한 와이드 이미지의 std :: pair를 반환 할 수 있습니다.
때로는 홀수 개의 '얇은'이미지가 있고 첫 번째 이미지는 넓은 이미지와 비슷하게 자체적으로 표시됩니다. 단일 커버 페이지 일 수 있습니다.
디렉토리의 어떤 파일이 비 이미지인지 알지 못한다는 것은 자신의 페이지 번호를 할당하고 파일을 표시 할 수없는 것을 의미합니다. 또한 사용자는 페이지 X로 건너 뛰기로 결정할 수 있으며 비 이미지 파일을 나중에 발견하여 제거하고 페이지 번호를 다시 할당하면 페이지 X가 다른 이미지로 보일 수 있습니다. 원래
: 그것은 중요한 경우
, 내가 Qt는 라이브러리에서 C++ 및 QImage를 사용하고 있습니다.
저는 디렉토리를 반복하고 이미지 경로에 QImage 생성자를 사용하고 있습니다. 이것은 물론 느리고 응용 프로그램이 응답하지 않게 만듭니다. 그러나, 그것은 내가 잘못된 이미지 파일을 감지하고 조기에 그들을 무시할 수있게 해줍니다.
디렉토리를 통과하는 동안 이미지 경로 만 저장할 수 있으며 실제로 필요할 때만로드 할 수 있습니다.하지만 이미지가 유효하지 않은지 여부는 알 수 없습니다.
나는이 두 가지 조합을 고려하고 있습니다. 즉, 디렉토리를 반복하는 동안 유효성을 검사하기 위해 이미지의 헤더 만 읽은 다음 필요한 경우 이미지 데이터를로드합니다.
그래서,
는 이미지 헤더 전체 이미지를로드하는 것보다 훨씬 더 빨리로드 것인가? 또는 헤더를 읽으려면 약간의 입출력을하고 있습니다. 이미지를 전체적으로로드하는 작업을 마칠 수도 있습니다. 나중에 아카이브의 이미지 압축을 풀 것입니다. 따라서 헤더 전체를 압축 해제하고 전체 파일을 압축 해제하는 경우에도 적용됩니다.또한,로드하는 방법/그냥 이미지 헤더를 읽는 방법을 모르겠다. 이미지의 헤더 만 읽을 수있는 라이브러리가 있습니까? 그렇지 않으면 각 파일을 스트림으로 열고 모든 파일 유형에 대한 이미지 헤더 판독기를 독자적으로 코딩해야합니다.
이미지가 유효한지 얼마나 빨리 알 필요가 있습니까? (바로 전화를 걸거나, 정의되지 않은 시간이 지나면 즉시?) 이미지를 조작하고, 보여 주며, 다른 곳으로 데이터를 옮기는 이미지로 무엇을하고 있습니까? –
위의 질문을 명확히했습니다. 타당성에 의해, 단순히 파일 확장자를 보거나 전체 이미지 파일을로드하지 않고 비 이미지 파일을 검색하는 것을 의미했습니다. 그래서 디렉토리를 반복 할 때만 헤더를 검사 할 수있는 방법이 있는지 물어 보았습니다. – Kache