Esempio n. 1
0
        protected 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
            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);
            }
        }
Esempio n. 2
0
        /**
         * Analyzes image colors and creates color map.
         */
        protected 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
            // convert map from BGR to RGB
//			for (int i = 0; i < colorTab.Length; i += 3)
//			{
//				byte temp = colorTab[i];
//				colorTab[i] = colorTab[i + 2];
//				colorTab[i + 2] = temp;
//				usedEntry[i / 3] = false;
//			}
            // 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);
            }
        }
Esempio n. 3
0
        /**
         * Analyzes image colors and creates color map.
         */
        protected void AnalyzePixels()
        {
            int len  = pixels.Length;
            int nPix = len / 3;

            indexedPixels = new byte[nPix];
            NeuQuant nq = new NeuQuant(pixels, len, sample);

            // initialize quantizer

            if (perfectColours)
            {
                List <Color> cols = new List <Color>();

                for (int i = 0; i < nPix; i++)
                {
                    Color c = Color.FromArgb(0xFF, pixels[i * 3], pixels[(i * 3) + 1], pixels[(i * 3) + 2]);
                    if (!cols.Contains(c))
                    {
                        cols.Add(c);
                    }
                }

                colorTab = new byte[cols.Count * 3];

                for (int i = 0; i < cols.Count; i++)
                {
                    colorTab[(i * 3)]     = cols[i].R;
                    colorTab[(i * 3) + 1] = cols[i].G;
                    colorTab[(i * 3) + 2] = cols[i].B;
                }

                //map image pixels to new palette

                for (int i = 0; i < nPix; i++)
                {
                    foreach (Color c in cols)
                    {
                        if (pixels[i * 3] == c.R && pixels[(i * 3) + 1] == c.G && pixels[(i * 3) + 2] == c.B)
                        {
                            usedEntry[cols.IndexOf(c)] = true;
                            indexedPixels[i]           = (byte)cols.IndexOf(c);
                            break;
                        }
                    }
                }
            }
            else
            {
                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);
            }
        }
Esempio n. 4
0
 /**
  * Analyzes image colors and creates color map.
  */
 protected 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
     // convert map from BGR to RGB
     //			for (int i = 0; i < colorTab.Length; i += 3)
     //			{
     //				byte temp = colorTab[i];
     //				colorTab[i] = colorTab[i + 2];
     //				colorTab[i + 2] = temp;
     //				usedEntry[i / 3] = false;
     //			}
     // 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 != Colors.Transparent)
     {
         transIndex = FindClosest(transparent);
     }
 }
		protected 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
			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);
			}
		}