/// <summary> /// Copy from a byte array to this buffer /// </summary> public void FromBytes(byte[] buffer, PixelFormats format) { int idxBuffer = 0; int idxData = 0; do { byte a = buffer[idxBuffer + format.AlphaOffset]; //alpha byte r = buffer[idxBuffer + format.RedOffset]; //red byte g = buffer[idxBuffer + format.GreenOffset]; //green byte b = buffer[idxBuffer + format.BlueOffset]; //blue Data[idxData] = (uint)(a << 24) | (uint)(r << 16) | (uint)(g << 8) | (uint)b; idxBuffer += 4;; idxData++; }while (idxBuffer < buffer.Length); }
/// <summary> /// Convert this buffer to byte array. Assuming 32-bit pixel format /// </summary> public byte[] ToBytes(PixelFormats format) { byte[] buffer = new byte[Width * Height * 4]; int pixelOffset = 0; int dataOffset = 0; for (int y = 0; y < Height; y++) { for (int x = 0; x < Width; x++) { uint c = Data[dataOffset]; buffer[pixelOffset + format.AlphaOffset] = (byte)((c & 0xFF000000) >> 24); // alpha buffer[pixelOffset + format.RedOffset] = (byte)((c & 0x00FF0000) >> 16); // red buffer[pixelOffset + format.GreenOffset] = (byte)((c & 0x0000FF00) >> 8); // green buffer[pixelOffset + format.BlueOffset] = (byte)((c & 0x000000FF)); // blue dataOffset++; pixelOffset += 4; } } return(buffer); }
/// <summary> /// Convert this buffer to byte array. Assuming 32-bit pixel format /// </summary> public byte[] ToBytes(PixelFormats format) { byte[] buffer = new byte[Width * Height * 4]; int pixelOffset = 0; int dataOffset = 0; for (int y = 0; y < Height; y++) { for (int x = 0; x < Width; x++) { uint c = Data[dataOffset]; buffer[pixelOffset + format.AlphaOffset] = (byte)((c & 0xFF000000) >> 24); // alpha buffer[pixelOffset + format.RedOffset] = (byte)((c & 0x00FF0000) >> 16); // red buffer[pixelOffset + format.GreenOffset] = (byte)((c & 0x0000FF00) >> 8); // green buffer[pixelOffset + format.BlueOffset] = (byte)((c & 0x000000FF)); // blue dataOffset++; pixelOffset += 4; } } return buffer; }
/// <summary> /// Copy from a byte array to this buffer /// </summary> public void FromBytes(byte[] buffer, PixelFormats format) { int idxBuffer = 0; int idxData = 0; do { byte a = buffer[idxBuffer + format.AlphaOffset];//alpha byte r = buffer[idxBuffer + format.RedOffset];//red byte g = buffer[idxBuffer + format.GreenOffset];//green byte b = buffer[idxBuffer + format.BlueOffset];//blue Data[idxData] = (uint)(a << 24) | (uint)(r << 16) | (uint)(g << 8) | (uint)b; idxBuffer += 4; ; idxData++; } while (idxBuffer < buffer.Length); }