У меня есть простой массив байт, представляющий собой изображение в шкале серого (значение исходить от 0 до 255)Преобразовать массив байтов в формате JPEG в оттенках серого
Там есть пример:
Byte[] sample = new Byte[16] {
55 ,0 ,0 ,255,
12 ,255,75 ,255,
255,150,19 ,255,
42 ,255,78 ,255 };
Я хочу, чтобы сохранить это в формате jpeg, но я не знаю, как это сделать.
Я попробовал 2 способа, но он не работает. Я думаю, что мой массив байтов не правильно отформатирован, но я не знаю, как это сделать.
Я попытался это:
TypeConverter tc = TypeDescriptor.GetConverter(typeof(Bitmap));
Bitmap bmp = (Bitmap)tc.ConvertFrom(sample);
bmp.Save(myPath, System.Drawing.Imaging.ImageFormat.Jpeg);
И это:
MemoryStream str = new MemoryStream(sample);
str.Position = 0;
using (Image image = Image.FromStream(str))
{
image.Save(myPath, System.Drawing.Imaging.ImageFormat.Jpeg);
}
Вы уверены, что это действительные данные JPEG? Ваше использование потока похоже на то, что он должен делать то, что вы хотите, если эти данные являются данными JPEG. –
Данные не являются самим файлом изображения, а массивом пиксельных данных, поэтому вы должны создать растровое изображение, установить пиксели в цвета, которые у вас есть (с помощью SetPixel или LockBits), а затем сохранить растровое изображение как jpeg. – Gusman
Я ожидаю, что где-то вам нужно сообщить своей библиотеке, что ваши данные в оттенках серого (то есть один компонент). – user3344003