- cximages[i]->SetPalette((RGBQUAD*)(quant->GetLookupTable()->GetPointer(0)));
- // Swap r and b in LUT before setting it
- RGBQUAD *pal = cximages[i]->GetPalette();
- for(unsigned int j=0; j<256; j++)
- std::swap(pal[j].rgbBlue, pal[j].rgbRed);
+ if(Dither) {
+ cximages[i]->CreateFromArray((BYTE *)RGBvolume->GetOutput()->GetScalarPointer(0,0,i),
+ width, height, 24, width*3, false);
+ cximages[i]->SwapRGB2BGR();
+ cximages[i]->DecreaseBpp(8, true, pal);
+ }
+ else {
+ cximages[i]->CreateFromArray((BYTE *)cast->GetOutput()->GetScalarPointer(0,0,i),
+ width, height, 8, width, false);
+ cximages[i]->SetPalette(pal);
+ }