Granice duchów („dzwonienie”) podczas zmiany rozmiaru w GDI +

Co się dzieje (zauważalne tylko na niektórych obrazach), to zobaczę białą pikselę o szerokości 1 piksela, która jest osadzona w jednym pikselu. Wydaje się, że dzieje się w obszarach, które są jasne, ale nie białe (np. Niebo). Jest to podobne do sytuacji, gdy coś jest zaostrzone, a obok krawędzi o wysokim kontraście widać krawędź ducha.

Oto kod repro, który doskonale go odtwarza. Używam wszystkich ustawień najwyższej jakości do skalowania.

ImageCodecInfo encoder = null;
EncoderParameters encoderParams = null;

foreach (ImageCodecInfo codec in ImageCodecInfo.GetImageEncoders())
{
    if (codec.MimeType == "image/jpeg")
    {
        encoder = codec;

        // use highest quality compression settings
        encoderParams = new EncoderParameters(1);
        encoderParams.Param[0] = new EncoderParameter(Encoder.Quality, 100L);
        break;
    }
}

using (Bitmap input = (Bitmap)Bitmap.FromFile(inputPath, true))
{
    // shrink by multiple of 2
    Rectangle rect = new Rectangle(0, 0, input.Width/32, input.Height/32);

    using (Bitmap output = new Bitmap(rect.Width, rect.Height))
    {
        using (Graphics g = Graphics.FromImage(output))
        {
            // use highest quality settings (updated per Mark Ransom's answer)
            g.CompositingMode = CompositingMode.SourceCopy;
            g.InterpolationMode = InterpolationMode.HighQualityBicubic;
            g.PixelOffsetMode = PixelOffsetMode.HighQuality;
            g.SmoothingMode = SmoothingMode.HighQuality;

            g.DrawImage(input, rect);
        }

        output.Save(outputPath, encoder, encoderParams);
    }
}

Jakieś pomysły? Jestem całkowicie zaskoczony. Przeczytałem mnóstwo pytań / odpowiedzi i żadna z nich nie wydaje się wpływać na moją sytuację.

Edytować:

To jest przykładprzed obraz:http://img14.imageshack.us/img14/4174/mg1647.jpg

To jest przykładpo obraz:http://img64.imageshack.us/img64/3156/afterringing.jpg

Jest bardziej wyraźny w przypadku oryginalnych plików (zanim usługa hostingowa „zoptymalizuje” je), ale na niebie można zobaczyć jaśniejszy pas jednopikselowy na mniejszym obrazie.

questionAnswers(2)

yourAnswerToTheQuestion