2011-02-25 16 views

Respuesta

11

Aquí es una manera muy rápida, aunque no seguro, de hacerlo:

[Editar] Este ejemplo se llevó 0.035 ms

// Create 2D array of integers 
int width = 320; 
int height = 240; 
int stride = width * 4; 
int[,] integers = new int[width,height]; 

// Fill array with random values 
Random random = new Random(); 
for (int x = 0; x < width; ++x) 
{ 
    for (int y = 0; y < height; ++y) 
    { 
     byte[] bgra = new byte[] { (byte)random.Next(255), (byte)random.Next(255), (byte)random.Next(255), 255 }; 
     integers[x, y] = BitConverter.ToInt32(bgra, 0); 
    } 
} 

// Copy into bitmap 
Bitmap bitmap; 
unsafe 
{ 
    fixed (int* intPtr = &integers[0,0]) 
    { 
     bitmap = new Bitmap(width, height, stride, PixelFormat.Format32bppRgb, new IntPtr(intPtr)); 
    } 
} 

y el resultado:

result

+0

buen ejemplo, pero la imagen no se ve al azar :) :) – Pedery

+0

que tienes razón, lo veo demasiado ... ya que el C# clase 'Random' se basa en un algoritmo matemático definitivo que supongo que no debería ser todo eso sorprendente. – tbridge

+0

Buen ejemplo, pero esto muestra una matriz de 1 dimensión, no 2-D según lo solicitado. – Kohanz

0

Si tiene la necesidad de ver la velocidad en my Kinect sample. Básicamente, crea un área de memoria y utiliza un puntero inseguro para generar una matriz Int32 hacia la memoria. Un objeto BitmapSource se utiliza para asignar un mapa de bits (imagen) directamente a la misma área. Este ejemplo particular también usa memoria no administrada para hacerlo compatible con P/Invoke.

This blogpost describe la diferencia en el rendimiento del uso inseguro. Parte de esa echar un vistazo a:

Tenga en cuenta que sólo se puede así hacer un Int32 [] - Puntero en lugar de los ejemplos que utiliza Byte [] - puntero.

0

Bitmap.LockBits debería funcionar, si está una imagen de Windows Forms querer.

+0

@ozcanovunc: La gramática ya era perfecta. Es posible que desee leer sobre el tiempo presente progresivo. –

0

Would proyección de la matriz en una cadena de base 64 para el streaming en un Bitmap ser lento también?

Cuestiones relacionadas