C\#JPEG 헤드 정보 처리 방법

2330 단어 JPEG헤드 메시지
누군가가 나 에 게 jpg 를 한 장 주 었 는데 1024*1024 크기 이 고 파일 크기 는 99kb 이 며 피 라 미 드 를 만 들 었 다.각 층 의 영상 크기 는 다음 과 같다.단위 kb
제 가 만 든 jpg 피라미드.  어떠한 가공 도 거치 기 위해
height256    46.2kb
height512    162kb
height1024   557kb
Photoshop 에서 만 든 jpg 피라미드  어떠한 가공 도 거치 기 위해
height256    48kb
height512    90kb
height1024   163kb
이 이미지 의 크기 차이 가 너무 크다 는 것 을 알 수 있 습 니 다.저 는 아무리 생각해 도 이해 할 수 없습니다.마지막 으로 위의 박문 을 본 후에 메타 데 이 터 를 얻 는 방식 으로 원인 을 보 겠 습 니 다.
메타 데이터 함수 가 져 오기

public void GetProperty()

  {

    Bitmap myImage1024 = new Bitmap(@"E:\myjpg\height.jpg");

    foreach (PropertyItem property in myImage1024.PropertyItems)

    {

      StringBuilder sb=new StringBuilder();

      Byte[] sbbyte = (Byte[])property.Value;

      sb.AppendFormat("ID:{0},Length:{1},Type:{2};
",

property.Id.ToString(), property.Len.ToString(), property.Type.ToString(),);

      Console.Write(sb);

     }

}

내 가 만 든 jpg 와 원본 그림 의 메타 데이터 가 다르다 는 것 을 발견 했다.
height1024:
ID:771,Length:1,Type:1; 머리 정보   PropertyTagSRGBRenderingIntent
ID:769,Length:8,Type:5; 머리 정보 태그 설명:301    PropertyTagGamma
ID:20752,Length:1,Type:1; 머리 정보   PropertyTagPixelUnit 해상도
ID:20753,Length:4,Type:4; 머리 정보   PropertyTagPixelPerUnitX
ID:20754,Length:4,Type:4; 머리 정보    PropertyTagPixelPerUnitY
 
height:
ID:20625,Length:128,Type:3;머리 정보 태그 해석:5091   PropertyTagChrominanceTable
ID:20624,Length:128,Type:3; 머리 정보 태그 해석:5090   PropertyTagLuminanceTable 
그 렇 군요.그러면 우 리 는 jpg 가 왜 크기 가 다른 지 알 게 되 었 습 니 다.좋 습 니 다.저 는 영상 피 라 미 드 를 만 드 는 방법 을 수 정 했 습 니 다.피 라 미 드 를 저장 하기 전에 그들의 머리 정 보 를 지 웠 습 니 다.그 후에 놀 라 운 발견:내 가 만 든 영상 피라미드 의 가장 정교 한 층 은 원시 이미지 와 똑 같은 크기 입 니 다!
영상 메타 데 이 터 를 제거 하 는 방법:

public void RemoveProperty()

{

   Bitmap myImage1024 = new Bitmap(@"E:\myjpg\height.jpg");         

   foreach (PropertyItem property in myImage1024.PropertyItems)

   {

       myImage1024.RemovePropertyItem(property.Id);

   }

   myImage1024.Save(@"E:\myjpg
opro.jpg");

}

좋은 웹페이지 즐겨찾기