Ejemplo n.º 1
0
/**
  * @brief  Convert RGB16 image to RGB24.
  * @param  pDestBuffer: buffer hold the data in RGB24 format
  * @param  pSrcBuffer: buffer hold the data in RGB16 format
  * @param  is_bgr: 1 if bgr coding is used, 1 if rgb (inverted)      
  * @retval None
  */
static void RGB16toRGB24(uint8_t *pDestBuffer, uint8_t *pSrcBuffer, uint8_t is_bgr)
{
  uint16_t *pSrc;
  uint8_t *pDest;
  uint32_t i = 0, j = 0;
  uint16_t value;

  pSrc = (uint16_t*) & pSrcBuffer[IMAGE_BUFFER_SIZE] - 1 ;
  pDest = (uint8_t*) & pDestBuffer[MAX_IMAGE_SIZE];

  for (i = IMAGE_COLUMN_SIZE; i > 0; i-- )
  {
    pDest -= (3 * IMAGE_LINE_SIZE);

    for (j = 2 * IMAGE_LINE_SIZE; j > 0; j -= 2 )
    {
      value    = (uint16_t) * pSrc;

      if( is_bgr)
      {
        *pDest++ = BMP_PIXEL16_TO_B(value);
        *pDest++ = BMP_PIXEL16_TO_G(value);
        *pDest++ = BMP_PIXEL16_TO_R(value);
      }
      else
      {
        *pDest++   = BMP_PIXEL16_TO_R(value);
        *pDest++   = BMP_PIXEL16_TO_G(value);
        *pDest++   = BMP_PIXEL16_TO_B(value);
      }
      pSrc--;
    }
    pDest -= (3 * IMAGE_LINE_SIZE );
  }
}
Ejemplo n.º 2
0
/**
  * @brief  Convert RGB16 image to RGB24.
  * @param  pDestBuffer: buffer hold the data in RGB24 format
  * @param  pSrcBuffer: buffer hold the data in RGB16 format
  * @retval None
  */
static void RGB16toRGB24(uint8_t *pDestBuffer, uint8_t *pSrcBuffer)
{
  uint16_t *pSrc;
  uint8_t *pDest;
  uint32_t i = 0, j = 0;
  uint16_t value;

  pSrc = (uint16_t*) & pSrcBuffer[IMAGE_BUFFER_SIZE] - 1;
  pDest = (uint8_t*) & pDestBuffer[0];

  for (i = IMAGE_COLUMN_SIZE; i > 0; i-- )
  {
    for ( j = 0; j < 2 * IMAGE_LINE_SIZE;  j += 2 )
    {
      value    = (uint16_t) * pSrc;

      *pDest++   = BMP_PIXEL16_TO_R(value);
      *pDest++   = BMP_PIXEL16_TO_G(value);
      *pDest++   = BMP_PIXEL16_TO_B(value);
      pSrc--;
    }
  }
}