将字节数组转换为灰度 jpeg
Convert byte array to jpeg in grayscale
我有一个简单的字节数组,表示灰度图像(值从 0 到 255)
有个例子:
Byte[] sample = new Byte[16] {
55 ,0 ,0 ,255,
12 ,255,75 ,255,
255,150,19 ,255,
42 ,255,78 ,255 };
我想将其保存为 jpeg 格式,但我不知道该怎么做。
我已经尝试了两种方法,但都不起作用。我认为我的字节数组格式不正确,但我不知道该怎么做。
我已经试过了:
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);
}
BitmapImage photo = byteToImage(byte[] sample)
此函数将字节转换为 BitmapImage
public BitmapImage byteToImage(byte[] buffer)
{
using(var ms = new MemoryStream(buffer))
{
var image = new BitmapImage();
image.BeginInit();
image.CacheOption = BitmapCacheOption.OnLoad;
image.StreamSource = ms;
image.EndInit();
}
return image;
}
然后 byteToImage
会 return 一张图片,这样你就可以保存了。
希望对您有所帮助
根据大家的指点,我终于找到了办法:
public static void SaveByteArryToJpeg(string imagePath, Byte[] data, int width, int height)
{
if (width * height != data.Length)
throw new FormatException("Size does not match");
Bitmap bmp = new Bitmap(width, height);
for (int r = 0; r < height; r++)
{
for (int c = 0; c < width; c++)
{
Byte value = data[r * width + c];
bmp.SetPixel(c, r, Color.FromArgb(value, value, value));
}
}
bmp.Save(imagePath, System.Drawing.Imaging.ImageFormat.Jpeg);
}
我有一个简单的字节数组,表示灰度图像(值从 0 到 255)
有个例子:
Byte[] sample = new Byte[16] {
55 ,0 ,0 ,255,
12 ,255,75 ,255,
255,150,19 ,255,
42 ,255,78 ,255 };
我想将其保存为 jpeg 格式,但我不知道该怎么做。
我已经尝试了两种方法,但都不起作用。我认为我的字节数组格式不正确,但我不知道该怎么做。
我已经试过了:
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);
}
BitmapImage photo = byteToImage(byte[] sample)
此函数将字节转换为 BitmapImage
public BitmapImage byteToImage(byte[] buffer)
{
using(var ms = new MemoryStream(buffer))
{
var image = new BitmapImage();
image.BeginInit();
image.CacheOption = BitmapCacheOption.OnLoad;
image.StreamSource = ms;
image.EndInit();
}
return image;
}
然后 byteToImage
会 return 一张图片,这样你就可以保存了。
希望对您有所帮助
根据大家的指点,我终于找到了办法:
public static void SaveByteArryToJpeg(string imagePath, Byte[] data, int width, int height)
{
if (width * height != data.Length)
throw new FormatException("Size does not match");
Bitmap bmp = new Bitmap(width, height);
for (int r = 0; r < height; r++)
{
for (int c = 0; c < width; c++)
{
Byte value = data[r * width + c];
bmp.SetPixel(c, r, Color.FromArgb(value, value, value));
}
}
bmp.Save(imagePath, System.Drawing.Imaging.ImageFormat.Jpeg);
}