У меня есть 3 растровых изображения размером около 28-30 МБ. Моему приложению нужно часто обращаться к пикселям из этих изображений.Добавить байт [] в ресурсы в wpf C#
В настоящее время я создаю BitmapData из всех трех файлов, фиксируя их, а затем считывая все пиксели в 3 разных байт []. Ниже приведен код для одного изображения:
System.Drawing.Imaging.BitmapData bmpData = result.LockBits(new System.Drawing.Rectangle(0, 0, result.Width , result.Height), System.Drawing.Imaging.ImageLockMode.ReadWrite,((System.Drawing.Bitmap)Properties.Resources.bmp1).PixelFormat);
int pixelBytes = System.Drawing.Image.GetPixelFormatSize(((System.Drawing.Bitmap)Properties.Resources.silk_box).PixelFormat)/8;
System.IntPtr ptr = bmpData.Scan0;
int size = bmpData.Stride * result.Height;
byte[] pixels = new byte[size];
System.Runtime.InteropServices.Marshal.Copy(ptr, pixels, 0, size);
Все 3 растровые изображения добавляются в ресурсы приложения.
Приходит в проблему ... Несмотря на то, что вышеуказанный метод работает нормально. Единственная проблема - производительность. Для преобразования растрового изображения в байт [] и доступа к конкретному пикселю требуется около 10-12 секунд.
То, что я думаю, это следующая строка, которая занимает много времени:
System.Runtime.InteropServices.Marshal.Copy(ptr, pixels, 0, size);
Для этой цели, я имею в виду, чтобы добавить байт [] всех 3-х изображений в ресурсах приложения, так что он может получить прямой доступ и преобразование изображений в байт [] не требуется. Затем производительность должна увеличиться.
Будет ли вышеуказанный способ доработать?
Мне нужно знать, как преобразовать изображения в байт [], а затем добавить их в ресурсы приложений?
Есть ли другие проблемы?
Благодаря
спасибо. Я понял! –