C\#JPEG 헤드 정보 처리 방법
제 가 만 든 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");
}