2009-06-12 6 views
1

jpeg 파일로 저장해야하는 초당 픽셀 데이터 배열이 있습니다. 내가 발견 한 것을에서 나는 ushort array to Image 객체

Image.Save(path, ImageFormat.Jpeg); 

를 사용하여이 작업을 수행 할 수 있지만 이미지 객체로 USHORT 데이터를 얻을하는 방법을 모르겠어요. 바이트 배열을 사용하지만 ushort를 사용하지 않는 방법을 찾았습니다. 저는 이것을 이해하려고 많은 시간을 보냈습니다. 그래서 지금 막 StackOverflow라고 부탁드립니다. 어떻게합니까?

편집 : 죄송합니다, ushorts는 16 비트 그레이 스케일 값입니다.

+0

데이터가 ushort (0-256 또는 16 비트 색상 심도)에있는 이유가 명확하지 않습니다. BitConverter를 가리 키도록하겠습니다. BitConverter는 대답을 포함 할 수도 있고 포함하지 않을 수도 있습니다. – Talljoe

+0

"짧은 픽셀 데이터 배열"은 아무 것도 의미하지 않습니다. 배열의 데이터 형식은 무엇입니까? –

답변

2

실제로는 Bitmap을 만들고, 그 위에 픽셀을 그리고 나중에 저장해야한다고 생각합니다. 이 같은

뭔가 :

var bitmap = new Bitmap(sizeX, sizeY, Imaging.PixelFormat.Format16bppGrayScale) 

for (y = 0; ...) 
for (x = 0; ...) 
{ 
    bitmap.SetPixel(x, y, color information from ushort array); 
} 

bitmap.Save("filename.jpg", ImageFormat.Jpeg); 

주 나는 색상 구조체에 16 비트 그레이 스케일 색상 정보를 얻을하는 방법을 모르겠어요.

+0

당신이 원시 픽셀 데이터를 얻는다면 (어떤 형식이든간에) 가장 직접적인 일은 픽셀 단위로 비트 맵을 생성하는 것입니다. – TheSean

+0

이것은 훌륭하지만 비트 맵에 _ushort_ 데이터를 가져 오는 방법에 대한 질문에는 대답하지 않습니다. –

+0

이것이 내가 끝내고 잘 작동하는 것 같습니다. 그러나 jpeg가 16 비트 그레이 스케일을 지원하지 않기 때문에 PixelFormat.Format24bppRgb를 사용하고 r, g 및 b를 동일한 값으로 설정하고 있습니다. –

1

Image에서 상속 한 Bitmap 클래스를 사용하고 싶습니다. This MSDN 참조가 도움이 될 수 있습니다.

+0

이것은 비트 맵 객체에 사용자 데이터를 가져 오는 방법을 알려주지 않습니다. –

+0

Bitmap.SetPixel()이 명백하다고 가정했습니다. –

+0

다시 말하지만 비트 맵 객체에 ushort 데이터를 가져 오는 방법은 알려주지 않습니다. SetPixels에는 ushort 값이 아닌 Color 객체가 필요합니다. 내 질문에 나는 이미지 (Bitmap은 Image에서 파생 됨)를 작성하는 방법을 알고 있으며 ushort 데이터가 아니라는 것을 알고 있습니다. –