2009-06-12 4 views
1

У меня есть массив данных пикселя ushort, который мне нужно сохранить как файл jpeg. Из того, что я нашел, что я могу сделать это с помощьюushort array to Image object

Image.Save(path, ImageFormat.Jpeg); 

, но я не знаю, как получить данные UShort в объект изображения. Я нашел способы сделать это с байтовыми массивами, но не с помощью ushort. Я потратил много времени, пытаясь понять это, поэтому теперь я прошу могучего StackOverflow, как это сделать?

Редактировать: Извините, у нас есть 16-точные значения оттенков серого.

+0

Непонятно, почему ваши данные находятся в пользовательской (0-256 или 16-битной глубине цвета). Я укажу на битконвертер, который может (или не обязательно) содержать ваш ответ. – Talljoe

+0

«массив пиксельных данных ushort» ничего не значит. Каков формат данных массива? –

ответ

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 битную полутоновую информацию цвета в структуры Color.

+0

Я согласен, что если вы получаете необработанные пиксельные данные (в любом формате), наиболее прямолинейная задача - создать пиксель Bitmap на пиксель. – TheSean

+0

Это замечательно, но не отвечает на вопрос о том, как получить _ushort_ данные в Bitmap. –

+0

Это то, что я закончил, и, похоже, работает нормально. Однако, так, чтобы вы знали, что jpeg не поддерживает 16-точечные оттенки серого, я использую PixelFormat.Format24bppRgb и устанавливаю r, g и b для того же значения. –

1

Я считаю, что вы хотите использовать класс Bitmap, который наследуется от Image. This MSDN ссылка может помочь.

+0

Это не говорит мне, как получить данные пользовательского ввода в объект Bitmap. –

+0

Я предположил, что Bitmap.SetPixel() был очевиден. –

+0

Опять же, это не говорит мне, как получить данные Ushort в объект Bitmap. SetPixels требует, чтобы объект «Цвет» не являлся значением «ushort». Как говорится в моих вопросах, я знаю, как создать изображение (растровое изображение получено из изображения), просто не с помощью данных ushort. –