Kompresja zdjęć.

0

Witam.

Chcę przez mikroserwis w asp .net core udostępnić metodę wystawiającą zdjęcia w BASE64, ale zależy mi na jak najmniejszej odpowiedzi.
Jako argument przyjmuje indeks pliku oraz żądane wymiary,

I teraz kwestia, żeby plik ze zdjęciem który na podstawie indeksu znajdzie ta metoda maksymalnie zkmniejszyć/skompresować (jednocześnie skalując do rządanych rozmiarów).

Póki co najlepszy efekt uzyskałem wykorzystując biblioteki ImageMagick (dokładnie Magick.NET-Q16-AnyCPU).
Na testowym pliku z 1 665 KB zszedłem do 679 KB, jednak to ciągle dużo.
Plik po zmianie rozmiaru zdjęcia w IrfanView (zapisuje jako JPG z jakością 100)
screenshot-20201130092853.png
zajmuje jedynie 42KB.

Pytanie:
czy znacie jakieś sposoby/biblioteki/rozwiązania których mógłbym użyć, żeby uzyskać żądany efekt?

0
hipekk napisał(a):

Witam.

wystawiającą zdjęcia w BASE64, ale zależy mi na jak najmniejszej odpowiedzi.

To jest sprzeczność. Zalezy Ci, ale wybierasz formatowanie zwiększające transmisję ze 3x

0

Nie byłem świadomy, że ten format zwiększa objętość x 3.

Jak w takim razie najlepiej przekazać obraz z serwisu do aplikacji?

0

a testowym pliku z 1 665 KB zszedłem do 679 KB, jednak to ciągle dużo.
Plik po zmianie rozmiaru zdjęcia w IrfanView (zapisuje jako JPG z jakością 100

Jak to z każdą stratną kompresją bywa, zmniejszyć jakość.
Zresztą defaultowa jakość dla JPG to jest 90 - potrzebne ci to 100?

0

Nie potrzebne mi 100 - sęk w tym, że nawet przy 100, po zapisie w IrfanView rozmiar pliku jest ponad 10 x mniejszy niż przy moich próbach kompresji :) (plik z IrfanView ma 42 KB, mój najlepszy wynik to 679 KB)

0

Nie wierzę, że jpg zapisany praktycznie bez kompresji zajmie tak mało. Prawdopodobnie jakość 100 w tej aplikacji to faktycznie 80 lub mniej.
Kilka pytań:

  • co jest źródłem? Bitmapa/tiff czy jakiś inny nieskompresowany format?
  • BMP 1.5 MB -> JPEG ~700kB przy niemal zerowej utracie jakości to prawidłowy współczynnik kompresji. 42kB odpowiadają bardzo silnej kompresji stratnej. Czy sprawdzałeś plik wynikowy z IrfanView? Czy testowałeś różnymi plikami (głównie chodzi o dużą ilość szczegółów/wysoki kontrast) - ich rozmiar vs wizualna utrata jakości?
  • czy sprawdzałeś jakim algorytmem kompresuje pliki IrfanView? https://photo.stackexchange.com/questions/98799/whats-the-best-way-to-re-save-after-editing-in-irfanview-for-print: "IrfanView uses a specific subtype of JPG compression called 42 that has lower quality over PhotoShop or PhotoPaint one that has a 44 one. So if you started with a really high-quality JPG image you will lose information even at 100% quality settings."
  • czy sprawdzałeś jak z kompresją radzą sobie inne programy, np. Photoshop, GIMP, Paint.NET? Porównaj odejmując oryginał od zapisanej i załadowanej ponownie kopii.
0

A jaki rozmiar dostajesz przy najprostszym bitmap.Save("plik.jpg")?

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