다음을 통해 공유


WCS 1.0의 구조 사용

WCS 1.0에서 사용하는 대부분의 구조체는 매우 간단하며 설명이 거의 필요하지 않습니다. 구조체라는 WCS 1.0 참조 섹션에 설명되어 있습니다.

예외는 SetupColorMatchingW 함수에서 사용하는 COLORMATCHSETUPW 구조체와 Wingdi.h에 정의된 다음 Windows 구조체입니다.

다음 topics 더 긴 길이로 설명합니다.

Windows 비트맵 헤더 구조체

WCS 1.0을 사용하면 ICC 색 프로필을 디바이스 독립적 비트맵(DIB)에 연결하거나 포함할 수 있습니다. 이렇게 하면 Windows 95에서 WCS를 사용하여 DIB 색을 보다 정확하게 특성화할 수 있습니다. 새 비트맵 헤더 구조인 BITMAPV5HEADER는 Windows 98 릴리스의 Wingdi.h에 정의되어 있습니다. 개발 목적으로 이 프로그래머 참조가 포함된 Icm.h 파일에도 포함됩니다. BITMAPV5HEADER 구조는 다음과 같습니다.

typedef struct {
    DWORD        bV5Size;
    LONG         bV5Width;
    LONG         bV5Height;
    WORD         bV5Planes;
    WORD         bV5BitCount;
    DWORD        bV5Compression;
    DWORD        bV5SizeImage;
    LONG         bV5XPelsPerMeter;
    LONG         bV5YPelsPerMeter;
    DWORD        bV5ClrUsed;
    DWORD        bV5ClrImportant;
    DWORD        bV5RedMask;
    DWORD        bV5GreenMask;
    DWORD        bV5BlueMask;
    DWORD        bV5AlphaMask;
    DWORD        bV5CSType;
    CIEXYZTRIPLE bV5Endpoints;
    DWORD        bV5GammaRed;
    DWORD        bV5GammaGreen;
    DWORD        bV5GammaBlue;
    DWORD        bV5Intent;         // Rendering intent for bitmap 
    DWORD        bV5ProfileData;    // Offset to profile data 
    DWORD        bV5ProfileSize;    // Size of embedded profile data 
    DWORD        bV5Reserved;       // Should be zero 
} BITMAPV5HEADER, FAR *LPBITMAPV5HEADER, *PBITMAPV5HEADER;

멤버 bV5CSType 은 PROFILE_EMBEDDED 또는 PROFILE_LINKED 값을 사용하여 프로필이 DIB에 포함되는지 또는 연결되었는지 여부를 지정할 수 있습니다. 멤버 bV5ProfileDataBITMAPV5HEADER 구조체의 시작부터 프로필 데이터의 시작까지의 오프셋(바이트)입니다. 프로필이 포함된 경우 프로필 데이터는 실제 프로필이며, 프로필 데이터가 연결된 경우 프로필 데이터는 프로필의 null로 종료된 파일 이름입니다. 유니코드 문자열일 수 없습니다. Windows 문자 집합(코드 페이지 1252)의 문자로만 구성되어야 합니다.

DIB가 메모리에 로드되면 프로필 데이터(있는 경우)가 색 테이블을 따라야 하며 bV5ProfileDataBITMAPV5HEADER 구조의 시작 부분에서 프로필 데이터의 오프셋을 제공해야 합니다. 비트맵 비트가 메모리의 색 테이블을 따르지 않으므로 이 멤버의 값은 이제 달라집니다. 애플리케이션은 DIB를 메모리에 로드 한 후 bV5ProfileData 멤버를 수정해야 합니다.

압축된 DIB의 경우 프로필 데이터는 파일 형식과 유사한 비트맵 비트를 따라야 합니다. bV5ProfileData 멤버는 BITMAPV5HEADER 구조체의 시작 부분에서 프로필 데이터의 오프셋을 제공해야 합니다.

애플리케이션은 bV5Size == sizeof ( BITMAPV5HEADER ) ANDbV5CSType 이 PROFILE_EMBEDDED 또는 PROFILE_LINKED 경우에만 프로필 데이터에 액세스해야 합니다.

프로필이 연결된 경우 프로필 경로는 Win32 CreateFile 함수를 사용하여 열 수 있는 정규화된 이름(네트워크 경로 포함)일 수 있습니다.

V4와 V5 헤더 간의 차이점

새 비트맵 구조를 사용하는 경우 BITMAPV4HEADERBITMAPV5HEADER 구조체가 설정되는 방식의 차이를 인식하는 것이 유용합니다.

V4 헤더 의미
bV4CSType LCS_CALIBRATED_RGB. 이 값은 엔드포인트와 감마가 적절한 필드에 제공된다는 것을 의미합니다. 가짜 값으로 인해 문제가 발생합니다.
bV4CSType LCS_sRGB. 이 값은 비트맵이 sRGB 색 공간에 있음을 의미합니다(감마 및 엔드포인트는 무시됨).
bV4CSType LCS_WINDOWS_COLOR_SPACE. 이 값은 비트맵이 Windows 기본 색 공간에 있음을 의미합니다.

 

V5 헤더 의미
bV5CSType LCS_CALIBRATED_RGB. 이 값은 엔드포인트와 감마가 적절한 필드에 제공된다는 것을 의미합니다. 가짜 값으로 인해 문제가 발생합니다.
bV5CSType LCS_sRGB. 이 값은 비트맵이 sRGB 색 공간에 있음을 의미합니다(감마 및 엔드포인트는 무시됨).
bV5CSType PROFILE_EMBEDDED. 이 값은 bV5ProfileData 가 사용할 프로필이 포함된 메모리 버퍼를 가리킨다는 것을 의미합니다(감마 및 엔드포인트는 무시됨).
bV5CSType PROFILE_LINKED. 이 값은 bV5ProfileData 가 사용할 프로필의 파일 이름을 가리킨다는 것을 의미합니다(감마 및 엔드포인트는 무시됨).
bV5CSType LCS_WINDOWS_COLOR_SPACE. 이 값은 비트맵이 Windows 기본 색 공간에 있음을 의미합니다.

 

이전 비트맵을 새 BITMAPV5HEADER 구조체와 변환하기 위해 Bitmap.exe라는 명령줄 변환 유틸리티 파일이 WCS 1.0 프로그래머 참조에 포함되어 있습니다.

BitMap.exe: 비트맵 헤더를 변환하기 위한 Command-Line 유틸리티

Bitmap.exe 지정한 설치 폴더 아래의 \Bin 폴더에 있는 명령줄 유틸리티입니다. Windows 비트맵의 헤더를 수정하여 기존 비트맵을 BITMAPINFOHEADERBITMAPV4HEADER 헤더 구조에서 최신 BITMAPV5HEADER 구조체로 변환하고 다시 다시 변환할 수 있습니다. 명령줄 구문은 다음과 같습니다.

BITMAP [/d] [/1|4|5] [/s] [/f] 
filename

명령줄 스위치에는 다음과 같은 효과가 있습니다.

스위치 의미
/d 기본값은 변환된 헤더에 자동으로 입력됩니다.
/1 지정된 비트맵을 BITMAPINFOHEADER로 변환
/4 지정된 비트맵을 BITMAPV4HEADER로 변환
/5 지정된 비트맵을 BITMAPV5HEADER로 변환
/f 비트맵에 이미 올바른 헤더가 있는 경우에도 강제로 변환
/s 지정된 폴더의 비트맵과 그 아래에 있는 모든 하위 디렉터리를 변환합니다.