private void AnalyzePixels()
{
int len = _pixels.Length;
int nPix = len/3;
_indexedPixels = new byte[nPix];
NeuQuant nq = new NeuQuant(_pixels, len, _sample);
// initialize quantizer
_colorTab = nq.Process(); // create reduced palette
// map image pixels to new palette
int k = 0;
for (int i = 0; i < nPix; i++) {
int index = nq.Map(_pixels[k++] & 0xff, _pixels[k++] & 0xff, _pixels[k++] & 0xff);
_usedEntry[index] = true;
_indexedPixels[i] = (byte)index;
}
_pixels = null;
_colorDepth = 8;
_palSize = 7;
// get closest match to transparent color if specified
if (_transparent != Color.Empty)
_transIndex = FindClosest(_transparent);
}