Zmniejszenie głębi kolorów w obrazie nie zmniejsza rozmiaru pliku?

Używam tego kodu do zmniejszenia głębi obrazu:

<code>public void ApplyDecreaseColourDepth(int offset)
{
    int A, R, G, B;

    Color pixelColor;

    for (int y = 0; y < bitmapImage.Height; y++)
    {
        for (int x = 0; x < bitmapImage.Width; x++)
        {
            pixelColor = bitmapImage.GetPixel(x, y);

            A = pixelColor.A;

            R = ((pixelColor.R + (offset / 2)) - ((pixelColor.R + (offset / 2)) % offset) - 1);

            if (R < 0)
            {
                R = 0;
            }

            G = ((pixelColor.G + (offset / 2)) - ((pixelColor.G + (offset / 2)) % offset) - 1);

            if (G < 0)
            {
                G = 0;
            }

            B = ((pixelColor.B + (offset / 2)) - ((pixelColor.B + (offset / 2)) % offset) - 1);

            if (B < 0)
            {
                B = 0;
            }

            bitmapImage.SetPixel(x, y, Color.FromArgb(A, R, G, B));
        }
    }
}
</code>

pierwsze pytanie brzmi: przesunięcie, które daję funkcji, nie jest głębią, prawda?

po drugie, gdy próbuję zapisać obraz po zmniejszeniu głębi jego kolorów, otrzymuję ten sam rozmiar oryginalnego obrazu. Czy to nie logiczne, że powinienem dostać plik o mniejszym rozmiarze, albo się mylę.

To jest kod, którego używam do zapisania zmodyfikowanego obrazu:

<code>private Bitmap bitmapImage;

public void SaveImage(string path)
{
    bitmapImage.Save(path);
} 
</code>

questionAnswers(6)

yourAnswerToTheQuestion