만약 내가 다음 사용하여 Qt를 수행 QImage :: Format_RGB32에서왜 RGB888에서 RGB565로 변환하면 색상 손실이 발생합니까?
- 로드 비트 맵을.
- 픽셀을 RGB565로 변환하십시오 (Qt 형식이 아니므로 "손으로"해야 함).
- 새로운 맵 1.
- 3.이
- 4 단계에서 생성 된 화상이 보이는 단계에서 생성 된 화상에 다시 RGB88에 RGB565 버퍼 화소 변환 단계에 들어있는 것과 같은 크기로 만들기 RGB 값을 비교할 경우 정확하게 동일하지는 않습니다.
2 ~ 5 단계를 반복하면 최종 이미지의 색상이 줄어들어 어두워지고 어두워집니다.
qRgb RGB565ToRGB888(unsigned short int aTextel)
{
unsigned char r = (((aTextel)&0x01F) <<3);
unsigned char g = (((aTextel)&0x03E0) >>2);
unsigned char b = (((aTextel)&0x7C00)>>7);
return qRgb(r, g, b, 255);
}
unsigned short int RGB888ToRGB565(QRgb aPixel)
{
int red = (aPixel >> 16) & 0xFF;
int green = (aPixel >> 8) & 0xFF;
int blue = aPixel & 0xFF;
unsigned short B = (blue >> 3) & 0x001F;
unsigned short G = ((green >> 2) < 5) & 0x07E0;
unsigned short R = ((red >> 3) < 11) & 0xF800;
return (unsigned short int) (R | G | B);
}
4278190080.
편집으로 RGB888로 RGB565에서 다시 변환됩니다 4278192128입니다 제대로 변환하지 않습니다 내 테스트 이미지에서 발견 예 : 여기
내 변환 기능이 있습니다 : 원본 소스 데이터가 RGB565 (내 테스트 RGB888 이미지가 생성 된 것임)라고도 언급해야합니다. 디스플레이 목적으로 만 RGB888로 변환 중이지만 두 개의 데이터 복사본을 유지하는 대신 나중에 RGB565로 변환하고 싶습니다.
5 또는 6 비트는 8과 동일한 값 범위를 유지할 수 없습니다. 변환은 손실이 많으므로 앞뒤로 변환 할 필요가 없도록 디자인을 재고해야합니다. –
<5) 및 <11) : << 5 및 << 11이 아니어야합니까? – teambob
나는 여분의 <어떤 식 으로든 붙여 넣기에서 제거 된 것 같아요 – paulm