Я роблю додаток для спільного використання віддаленого робочого столу, в якому я фіксую зображення робочого столу і стискаю його та надсилаю до приймача. Для стиснення зображення мені потрібно перетворити його в байт [].
В даний час я використовую це:
public byte[] imageToByteArray(System.Drawing.Image imageIn)
{
MemoryStream ms = new MemoryStream();
imageIn.Save(ms,System.Drawing.Imaging.ImageFormat.Gif);
return ms.ToArray();
}
public Image byteArrayToImage(byte[] byteArrayIn)
{
MemoryStream ms = new MemoryStream(byteArrayIn);
Image returnImage = Image.FromStream(ms);
return returnImage;
}
Але мені це не подобається, тому що мені потрібно зберегти його у ImageFormat, і це також може використовувати ресурси (уповільнення), а також створювати різні результати стиснення. Я читав про використання Marshal.Copy та memcpy, але я не в змозі розуміти їх.
То чи є ще якийсь метод для досягнення цієї мети?
MemoryStream
; це повністю керований ресурс, якщо ви не використовуєте його для видалення. В обох цих випадках було б недоцільно розпоряджатися ресурсом.