개요
빌드 후 헤더파일과 바이너리 파일을 프로젝트 속성을 추가 해야 한다.
헤더파일은 임의의 include 폴더를 만들고 모두 복사 해준다. 이후 프로젝트 속성에서 추가 포함 디렉토리에 include 경로를 추가 한다.
바이너리 파일 또한 링커 - 추가 종속성에 필요한 파일들을 추가 한다. 아래는 예시 이다.
스마트 스케일러 적용
JPEG 내부의 스마트 스케일러를 사용하기 위해서는 아래 코드가 필요 하다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | int nWidth = 500; // 화면에 표시 될 이미지의 WIDTH int nHeight = 500; // 화면에 표시 될 이미지의 HEIGHT int width = 0; int height = 0; int nResult = tjDecompressHeader2(hDecoder, (unsigned char*)buffer, sizebytes, &width, &height, &nSubSampling); tjscalingfactor *scalingFactors = NULL; int numScalingFactors = 0; if ((scalingFactors = tjGetScalingFactors(&numScalingFactors))) { tjscalingfactor scalingFactor = { 1, 1 }; for (int i = 0; i < numScalingFactors; i++) { int scaledw = TJSCALED(width, scalingFactors[i]); int scaledh = TJSCALED(height, scalingFactors[i]); if (scaledw <= nWidth && scaledh <= nHeight) { width = scaledw; height = scaledh; break; } } } | cs |
tjDecompressHeader2() 메소드를 호출 하면 이미지의 원본 사이즈를 알 수 있다.
1 2 3 4 5 | int width = 0; int height = 0; int nResult = tjDecompressHeader2(hDecoder, (unsigned char*)buffer, sizebytes, &width, &height, &nSubSampling); | cs |
원본 크기를 찾은 이후에는 화면에 표시 될 크기와 가장 가까운 크기를 찾는다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | tjscalingfactor *scalingFactors = NULL; int numScalingFactors = 0; if ((scalingFactors = tjGetScalingFactors(&numScalingFactors))) { tjscalingfactor scalingFactor = { 1, 1 }; for (int i = 0; i < numScalingFactors; i++) { int scaledw = TJSCALED(width, scalingFactors[i]); int scaledh = TJSCALED(height, scalingFactors[i]); if (scaledw <= nWidth && scaledh <= nHeight) { // 화면의 표시 될 크기와 가장 가까운 크기를 찾는다. width = scaledw; height = scaledh; break; } } } | cs |
이후 tjDecompress2() 메소드를 호출 하면 스마트 스케일이 적용된 픽셀을 얻을 수 있다.
1 | tjDecompress2(hDecoder, (unsigned char*)buffer, sizebytes, pPixelData, width, TJPAD(width * 4), height, TJPF_BGRX, TJFLAG_FASTDCT | TJFLAG_NOREALLOC); | cs |
결과
WIC(Window Image Component), JPEG9A, JPEG-TURBO 라이브러리로 각각의 이미지를 로딩하여 성능 측정을 하였다. 대부분에 이미지 에서 JPEG-TURBO 라이브리에서 빠른 성능을 보였다. 해당 측정의 결과는 JPEG 내부의 SmartScaler 를 사용하여 측정 하였다. JPEG-TURBO 는 JPEG-9A 보다 59% 이상에 빠른 성능을 보인다.
Windows 10 Pro, Intel(r) Core(TM) i7-4790 CPU @ 3.60GHz, Ram 8 GB, x64 에서 테스트 하였다.
JPEG-TURBO #2 - CPU 상태 조회 (0) | 2018.12.24 |
---|---|
JPEG-TURBO #1 - 설치 (0) | 2018.12.24 |
NEON 과 SSE 간에 변환 (0) | 2018.12.17 |
댓글 영역