Jak znaleźć jakość JPG?


16

Kiedy zapisuję plik JPG w GIMP, mogę dostosować jakość, w której go zapisuję, od 0-100 (używam 89). Wygląda na to, że użyłem aplikacji, aby zobaczyć, jaki numer znajduje się w zapisanym pliku, ale jeśli tak, nie mogę przez całe życie ustalić, co to było. Wszelkie sugestie dotyczące tego, czego użyć?


2
Aby się upewnić, że jest znany: ustawienie jakości różnych aplikacji nie jest porównywalne, ogólnie: faqs.org/faqs/jpeg-faq/part1/section-5.html . Jednak zarówno GIMP, jak i ImageMagick powinny korzystać ze skali jakości IJG.
Michael Schumacher

Odpowiedzi:


22

Po zapisaniu nie można już powiedzieć o jakości.

(Ustawienie jakości podczas zapisywania mówi tylko oprogramowaniu, ile strat uważasz za akceptowalne, ale raz zapisane: utracone utracone. Potrzebujesz człowieka, by powiedzieć, czy coś wygląda ładnie.)

Hmmm, chyba się myliłem. Nadal uważam, że powyższe jest prawidłowe, ale ImageMagick „s identifyudowadnia mi źle?

identyfikacja -verbose myimage.jpg

Zdjęcie: myimage.jpg
  Format: JPEG (format JFIF Joint Photographic Experts Group)
  Klasa: DirectClass
  Geometria: 358 x 240 + 0 + 0
  Rozdzielczość: 300 x 300
  [...]
  Kompresja: JPEG
  Jakość: 90
  Orientacja: niezdefiniowana
  [...]

Nie wiem, jak obraz został zapisany w moim teście, ale nie ma żadnych danych EXIF. Czy jakość może być nadal przechowywana na obrazie?


Czy nie możesz eksperymentować z konwersją na różne cechy? Trudno w to uwierzyć, chyba że ImageMagick przechowuje prywatne dane w pliku jpg (więc może to nie działać z innymi pakietami).
harrymc

Ciekawy. Poczekam, aby zobaczyć, jak to się rozwinie.
Nathaniel

1
+1 Tak działa imagemagick. Mogę wielokrotnie zmieniać jakość JPEG i użyć identyfikatora, aby zobaczyć zmianę. Działa to, jeśli korzystam z konwersji (kolejna niestabilność imagemagick) lub innego narzędzia, takiego jak MS Photo Editor.
DaveParillo

1
ImageMagick robi coś innego. Daje oszacowanie, zamiast czytać, co zrobiło oryginalne oprogramowanie. Twoja oryginalna, przekreślona odpowiedź jest naprawdę bardziej poprawna. Zobacz odpowiedź @ sleske.
mattdm

26

Aby dodać do odpowiedzi Arjana:

identifyWygląda na to, że ImageMagick faktycznie zagląda do obrazu JPEG, aby odgadnąć ustawienie jakości użyte do jego zakodowania.

Kod źródłowy ImageMagick (dopinguj darmowe oprogramowanie :-)) zawiera następujące wiersze :

/*
  Determine the JPEG compression quality from the quantization tables.
*/
sum=0;
for (i=0; i < NUM_QUANT_TBLS; i++)
{
  if (jpeg_info.quant_tbl_ptrs[i] != NULL)
    for (j=0; j < DCTSIZE2; j++)
      sum+=jpeg_info.quant_tbl_ptrs[i]->quantval[j];

( coders/jpeg.c, wiersz 843ff. w mojej ostatniej wersji kodu źródłowego ImageMagick).

Nie wiem wystarczająco dużo o JPEG, żeby naprawdę zrozumieć, ale wydaje się, że robi coś takiego, jak opisano w tym artykule:

Określ współczynnik jakości JPEG za pomocą Visual C # .NET (link martwy od stycznia 2018; skopiuj na archive.org z 2015 )

Tak, tak, identifymoże faktycznie określić ustawienie jakości JPEG tylko na podstawie samego skompresowanego pliku (chociaż wynik nie zawsze może być całkowicie dokładny).


1
Whoa. Bardzo miło z twojej strony, że możesz sprawdzić kod źródłowy. Chłodny.
Nathaniel

@Nathaniel, czy możesz wybrać tę odpowiedź jako zaakceptowaną zamiast mojej? Dzięki! (Nie mogę usunąć mojego, dopóki jest zaakceptowany.)
Arjan

Wyszukuje tabelę kwantyzacji JPEG, która najlepiej uwzględnia wygląd skompresowanego strumienia bitów.
jbarlow

5

Tak jak powiedział Arjan identify -verbose myimage.jpg, zrobi to. Ponieważ imagemagick jest narzędziem CLI, może być przydatne do tworzenia skryptów. Podejście identify -verbose myimage.jpg | grep ...jest dość powolne. Polecam korzystanie z komunikatorów internetowych w ten sposób

identify -format '%Q' myimage.jpg

Jest znacznie szybszy.


2

JPEGsnoop to miła alternatywa dla ImageMagick's identify. Pobieranie jest dość małe i jest dostępne w formacie przenośnym.

Po przetworzeniu pliku JPG pod znacznikiem DQT znajdziesz „Przybliżony współczynnik jakości”.



Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.