2014-12-24 3 views
-1

jpg/jpeg 이미지의 높이 및 너비를 C 언어로 찾으려고합니다.C를 사용하여 JPG/JPEG 이미지 높이 및 너비 찾기

나는 위의 그림과 같이 내가 몇 줄의 코드를 찾을 코드

iPos = iPos + 5; 
*ipHeight = ucpImageBuffer[iPos]<<8|ucpImageBuffer[iPos+1]; 
*ipWidth = ucpImageBuffer[iPos+2]<<8|ucpImageBuffer[iPos+3]; 
printf("\nW x H = %d x %d\n\n",*ipWidth,*ipHeight); 

의 일부 라인을 보았다하지만 난 ucpImageBuffer 무엇을해야 몰라?

그리고 내가 어디에서 시작해야할지 모르십니까?

답변

1
#include <stdio.h> 
#include <stdlib.h>  
#include <string.h> 

void main() 
{ 
    int iHeight=0, iWidth=0, iPos, i; 
    char *cpFileName = "/images/image1.jpg"; 

    FILE *fp = fopen(cpFileName,"rb"); 
    fseek(fp,0,SEEK_END); 
    long len = ftell(fp); 
    fseek(fp,0,SEEK_SET); 

    unsigned char *ucpImageBuffer = (unsigned char*) malloc (len+1); 
    fread(ucpImageBuffer,1,len,fp); 
    fclose(fp); 

    printf("\n\nBuffer size %ld", len); 

    /*Extract start of frame marker(FFCO) of width and hight and get the position*/ 
    for(i=0;i<len;i++) 
    { 
     if((ucpImageBuffer[i]==0xFF) && (ucpImageBuffer[i+1]==0xC0)) 
     { 
      iPos=i;   
      break; 
     }  
    } 

    /*Moving to the particular byte position and assign byte value to pointer variable*/ 
    iPos = iPos + 5; 
    iHeight = ucpImageBuffer[iPos]<<8|ucpImageBuffer[iPos+1]; 
    iWidth = ucpImageBuffer[iPos+2]<<8|ucpImageBuffer[iPos+3]; 

    printf("\nWxH = %dx%d\n\n", iWidth, iHeight); 

    free(ucpImageBuffer); 
} 
+0

이것은 gcc 컴파일러를 사용하여 이미 테스트 한 작동 코드입니다. –

+1

이것은 답변이 아닙니다. 수정 버튼을 사용하여 질문에 더 많은 정보를 추가하십시오. –

+0

사실 내 답변을 업로드로 내 대답을 가지고. 다른 사람들을 돕기 위해이 질문과 답변을 작성했습니다. 귀하의 제안 주셔서 감사하지만, 지금은 내 질문의 해결책을 가지고 –