Zmniejszanie zdjęć, strata jakości JPEG

0

Witam,

Zbudowałem metodę do zmniejszania zdjęć i niestety strasznie tracę jakość - efekt końcowy stanowczo mnie nie zadowala :)
Proporcje jako tako trzyma ale jakość leci...

public void ResizePicture(string originalpath, string newpath, Size newsize)
        {

            Image obecne_zdjecie = Image.FromFile(originalpath);            
            int wysokosc = obecne_zdjecie.Height;


            wysokosc = Convert.ToInt32((wysokosc * newsize.Width) / obecne_zdjecie.Width);

            using (Bitmap newbmp = new Bitmap(newsize.Width, wysokosc), oldbmp = Bitmap.FromFile(originalpath) as Bitmap)
            {
                using (Graphics newgraphics = Graphics.FromImage(newbmp))
                {
                    newgraphics.Clear(Color.FromArgb(-1));
                    newgraphics.DrawImage(oldbmp, 0, 0, newsize.Width, wysokosc);                   
                    newgraphics.Save();
                    newbmp.Save(newpath, System.Drawing.Imaging.ImageFormat.Jpeg);
                }
            }
        }

Jakieś pomysły?

0

Użyj starej metody dzielenia na pół. Zmniejszaj o połowę liczbę pikseli w pionie i poziomie uśredniając ich wartości, czyli każde 4 piksele zamieniając na 1 (tu też jest pewne pole możliwości - można wyciągać różne rodzaje średnich, nie tylko używając modelu kolorów RGB i średniej arytmetycznej składowych). Rób to w pętli aż do momentu kiedy zmniejszona rozdzielczość kolejnego obrazka wpadłaby poniżej żądanego rozmiaru. Wtedy ostatni raz przeskaluj klasycznie - utrata jakości będzie znikoma. Takie postępowanie wystarczy mi do zrobienia automatem wciąż czytelnych ikon z dowolnie dużej kobyły zrobionej aparatem.

1

@Olamagato: wyważasz otwarte drzwi. .net umożliwia wybranie algorytmu zmieniania rozmiaru obrazka.
wydaje mi się, że problem jest w innym miejscu. Bobobo, zauważ, że Bitmap.Save w przeciążonej wersji obsługuje parametr codec, podaj tam utworzony kodek jpeg z jakością 85 (lub wyższą) i będzie śmigać. jak to zrobisz znajdziesz po kilkudziesięciu sekundach szukania na google.

1 użytkowników online, w tym zalogowanych: 0, gości: 1