2012-01-23 2 views
1

기존 Access 2010 데이터베이스에서 정수, 문자열 및 부동 소수점 데이터를 추출하기 위해 ANSI C 컴파일러 (LabWindows/CVI 버전 2010)를 사용하고 있습니다. . 그러나 긴 이진 데이터로 저장된 이미지 데이터를 파일 (.jpg 또는 .tiff)로 추출 할 수 없었습니다. 기술이 알려지면 이것이 어려운 작업이 아니라고 생각합니다. 코드 또는 기술에 대한 경험이 없습니다. 어떤 도움을 주시면 감사하겠습니다.ANSI C를 사용하여 데이터베이스의 이진 이미지 데이터를 .jpg 파일로 추출

+0

추출 할 항목이 무엇입니까? 내 말은, 숫자의 그래픽 표현을 JPG 파일에 저장하고 싶습니까? –

+0

어떤 데이터 액세스 라이브러리를 사용하고 있습니까? –

+0

'jpeg' 또는'tiff' 라이브러리가 없으면 이것은 간단한 작업이 아닙니다. libjepg를 살펴보십시오. – Dave

답변

1

이미지 열의 모든 데이터를 성공적으로 검색하는 경우 fwrite()을 사용하여 파일에 기록하면됩니다.

열에서 긴 데이터를 검색하는 일반적인 액세스 패턴은 한 번에 하나의 청크를 가져 오는 기능을 사용하는 것입니다. 이것은 ODBC 함수 SQLGetData이 작동하는 방법입니다. 고정 길이 버퍼와 길이를 전달하고 반환 값은 데이터가 잘 렸음을 나타내므로 파일에 데이터를 쓴 다음 성공 코드를 반환 할 때까지 다시 호출해야합니다.

DBGetColBinaryBuffer() 함수는 내쇼날 인스트루먼트의 LabWindows/CVI SQL 툴킷에 대한 문서를 보면 코드 -1을 반환 할 수 있습니다. DB_TRUNCATION은 "결과를 보관하기 위해 전달 된 버퍼가 결과를 저장할만큼 크지 않습니다 부분적인 결과가 버퍼에 반환되었습니다. "

나는 DBGetColBinaryBuffer()이 루프에서 사용되도록 설계되었으며 그렇게하면 부분 결과를 파일에 쓰면 올바른 이미지로 끝납니다.

+0

Martin Broadhurst, DBGetColBinaryBuffer()는 트릭을 수행하는 것처럼 보입니다. 나는이 프로젝트로 돌아가서 결과를 알려 줄 수있는대로 바로 시도 할 것입니다. 감사! – ryyker

+0

감사합니다. BLOB가 암호화 된 파일임을 깨닫고 마지막으로 읽는 방법을 알아 냈습니다.하지만 마지막 단계에서 제안한 것이 맞습니다. – ryyker

관련 문제