このコードを使用して、画像の奥行きを減らします。
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));
}
}
}
最初の質問は、私が関数に与えるオフセットは深さではないということです、そうですか?
2つ目は、色の濃さを減らした後で画像を保存しようとすると、元の画像と同じサイズになるということです。より小さなサイズのファイルを取得するのは論理的ではありませんか、それとも間違っています。
これは、変更した画像を保存するために使用するコードです。
private Bitmap bitmapImage;
public void SaveImage(string path)
{
bitmapImage.Save(path);
}