现在我的方法是:
public static byte[] ImageToByte(Image img)
{
byte[] byteArray = new byte[0];
using (MemoryStream stream = new MemoryStream())
{
img.Save(stream, System.Drawing.Imaging.ImageFormat.Bmp);
stream.Close();
byteArray = stream.ToArray();
}
return byteArray;
}
after read this。我仍然感到困惑,无法找到使用它的方法。
所以我的问题是如何使用Parallel.ForEach
或将任何方法与我的方法并行。
我的目标是通过使用更多CPU核心来加速这种方法,以加快任何建议吗?
PS。我不认真,如果我可以与我的方法并行,而不是加速任何事情 我只是想尝试一下并记录结果谢谢你们所有人。
答案 0 :(得分:3)
如果您有多张图片,则只能使用并行处理。
想象一下,你可以通过每个循环中的单独图像来执行此操作:
Parallel.ForEach(images, img =>
{
byte[] byteArray = new byte[0];
using (MemoryStream stream = new MemoryStream())
{
img.Save(stream, System.Drawing.Imaging.ImageFormat.Bmp);
stream.Close();
byteArray = stream.ToArray();
}
});
答案 1 :(得分:0)
如果你真的想加快你可以做的代码:
BitmapData d = image.LockBits(new Rectangle(0, 0, image.Width, image.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
int length = Math.Abs(d.Stride) * image.Height;
byte[] buff = new byte[length];
Marshal.Copy(d.Scan0, buff, 0, length);
image.UnlockBits(d);
return buff;