Czy samo otwarcie i zamknięcie pliku JPEG obniża jakość obrazu?

24

Miałem sporo zajęć fotograficznych, czytałem wiele książek fotograficznych i przeglądałem wiele forów. I nie mogę znaleźć spójnej odpowiedzi na to pytanie. Jeden z „obozów” mówi, że jakość obrazu spada przy każdym otwarciu i zamknięciu pliku JPEG (z powodu kompresji). Inny obóz twierdzi, że nie ma utraty jakości obrazu, chyba że faktycznie EDYTUJESZ zdjęcie, a następnie je ponownie zapisujesz.

Czy robi to różnicę, jeśli:

  • Otwieram obraz w standardowej przeglądarce zdjęć i po prostu „zamykam” zdjęcie?
  • Czy mogę otworzyć obraz w Photoshop Elements Editor i tam go zamknąć?
  • Jeśli po prostu zamknę i zrób zdjęcie a ponownie je zapiszesz?

Czy ktoś może udzielić prostej odpowiedzi, kiedy zamknięcie lub zapisanie pliku JPEG powoduje obniżenie jakości obrazu, a kiedy nie?

markthomas
źródło
1
Otwarcie pliku JPEG nie „dekompresuje go”, a zamknięcie go nie powoduje „ponownej kompresji” i nie powoduje utraty jakości. Kompresja (i „uszkodzenie”) jest wykonywana, gdy plik JPEG jest generowany pierwotnie, a nie podczas otwierania.
ElendilTheTall
11
@ElendilTheTall: otwarcie obrazu JPEG z całą pewnością spowoduje jego dekompresję, przynajmniej jeśli otwarcie ma na myśli wyświetlenie go zamiast operacji systemu plików.
Michael Borgwardt

Odpowiedzi:

55

Jest to oparte na nieporozumieniu. Utrata jakości występuje tylko podczas kompresji, która jest wykonywana, gdy obraz jest zapisywany jako JPEG. Ale nie ma znaczenia, czy był edytowany, czy nie.

Tak więc: Państwo będzie (z pewnymi wyjątkami bardzo specyficznych patrz komentarze) tracą jakość jeśli otworzyć zdjęcie w edytorze graficznym i zapisać ją ponownie, nawet jeśli nie wprowadzać żadnych zmian. Ale jeśli otworzysz go tylko, aby go wyświetlić, a następnie zamkniesz zamiast zapisywania, nic się nie zmieni.

Nawiasem mówiąc: dotyczy to tylko tradycyjnych programów do edycji obrazów, takich jak Photoshop. Programy takie jak Lightroom, które „opracowują” pliki RAW, stosują inne podejście (nawet podczas obsługi plików JPEG): zawsze zachowują oryginalny obraz nienaruszony i oddzielnie zapisują wykonane kroki edycji, które są stosowane podczas eksportowania ostatecznych wyników. Dzięki takim programom nie musisz się martwić utratą jakości (to znaczy więcej niż raz). Ale i tak nie powinieneś używać plików źródłowych JPEG.

Michael Borgwardt
źródło
4
„Państwo będzie tracić jakości ... nawet jeśli nie wprowadzać żadnych zmian.” To zależy od zastosowania. Aplikacja może wiedzieć, że nie dokonano żadnych zmian i przepisać oryginalny skompresowany schemat bez dodatkowej utraty jakości w stosunku do oryginalnego JPEG.
DocMax
9
@LightnessRacesinOrbit: Jestem pewien, że się mylisz. Przekształcanie danych z dziedziny częstotliwości do pierwotnej iz powrotem może za każdym razem powodować dodatkowe błędy związane z kwantyzacją. Być może w końcu osiągnie stan ustalony, ale wątpię w to.
Michael Borgwardt
2
Tutaj: photo.stackexchange.com/a/34192 zbiegło się w 8 lub 9 cyklach w moich przykładach.
mattdm
1
@DocMax: Będzie to wymagało albo 1), że aplikacja przechowuje w pamięci (lub ponownie odczytuje) skompresowany strumień, albo 2) w rzeczywistości nie przepisuje pliku JPEG, pozostawiając go nienaruszonego (w tym znacznik czasu, jeśli jest obecny). Bardzo nieprawdopodobne scenariusze
leonbloy
1
Zgadzam się, że rzadko zdarza się, aby aplikacja wstrzymywała i ponownie zapisywała skompresowany strumień. Widziałem to raz, ale to było wiele lat temu, kiedy pamięć była cenniejsza niż dziś. Chodzi mi tylko, że „ będzie tracić jakość” oznacza, że utrata jakości nie da się uniknąć w ogóle; Nie miałbym problemu z „prawie na pewno stracę jakość”.
DocMax
23

Absolutnie nie. Musisz edytować plik i zapisać go ponownie jako JPEG, aby spotęgować efekty kompresji obrazu. Samo oglądanie go nie ma żadnego efektu - gdyby tak się stało, wszystkie pliki JPEG w sieci „zużyłyby się” całkowicie w ciągu jednego lub dwóch dni.

użytkownik32334
źródło
FYI - oto przykład rodzaju wskazówek, które uważam za mylące (pochodzi ze strony z blogami): „Jaki jest minus fotografowania .JPEG? Ma schemat kompresji, który powoduje degradację obrazu za każdym razem, gdy plik jest otwierany i zapisywany. Degradacja jest niewielka. Najprawdopodobniej na początku tego nie zauważysz. Ale z czasem to zobaczysz. ”
markthomas
14
@markthomas: kluczowe słowo zostało zapisane - oszczędzanie to coś zupełnie innego niż zamknięcie.
Michael Borgwardt
2
+1 za „zużywanie się” ... Google musi nakładać nowe warstwy „farby” co kilka sekund na stronie wyników wyszukiwania!
hjk
@MichaelBorgwardt Rzeczywiście, ale może być źle zrozumiany jako „za każdym razem, gdy plik jest otwierany i za każdym razem, gdy plik jest zapisywany”. To prawda, że ​​miałbyś o wiele większą degradację, gdybyś uratował bez otwarcia, ale nadal nie sądzę, że otwarcie powinno być wspomniane.
Faks
7

Kompresję JPEG można opisać jako posiadającą dwie odrębne fazy: najpierw fazę stratną, a następnie fazę bezstratną. Zrozumienie różnicy między nimi jest ważne dla tego pytania. To nie tyle, ponieważ pomaga zrozumieć, co się dzieje, ale dlatego, że pomaga zrozumieć, skąd się biorą typowe błędy.

Kompresja stratna ma miejsce tylko po zapisaniu pliku . Jest to część, która powoduje utratę jakości. Jednak samo zamknięcie pliku nie wystarczy, aby uruchomić kompresję stratną: musisz go zapisać . Niektórzy redaktorzy mogą odmówić zapisania plików JPEG, które nie były edytowane, aby uniknąć przypadkowego uruchomienia bezstratnej kompresji, ale nie wiem od samego początku, czy jakikolwiek edytor faktycznie to robi.

Kompresja bezstratna występuje również tylko wtedy, gdy plik jest zapisywany . Główna różnica polega na tym, że nawet jeśli zdarzyło się to, gdy plik został zamknięty bez zapisywania, nie miałoby to znaczenia, ponieważ jest bezstratny. JPEG wykorzystuje obie techniki razem.

Bezstratna dekompresja ma miejsce za każdym razem, gdy plik jest otwierany, ale nie w żadnym innym momencie . Nie po zamknięciu, a nawet po zapisaniu. Podobnie jak w przypadku bezstratnej dekompresji, nie miałoby to znaczenia, nawet gdyby miało to miejsce w tych czasach, ponieważ jest bezstratne.

„Utrata dekompresji” nigdy się nie zdarza. Nie ma czegoś takiego . Nie może być, ponieważ dane wyrzucone podczas stratnej fazy kompresji zniknęły. Gdybyś mógł go jakoś zrekonstruować, miałbyś bezstratny algorytm kompresji, a nie stratny. Wspominam nawet o tej koncepcji, ponieważ po wspomnianiu dwóch rodzajów kompresji wyglądałoby dziwnie, gdybym wspomniał o jednym rodzaju dekompresji bez wyjaśnienia dlaczego.

Pamiętaj, że zapisanie pliku wyzwala oba rodzaje kompresji . Nie ma na to wiele możliwości, chyba że wiesz, że obraz nie został edytowany, ale wtedy nie ma sensu zapisywać go. Zauważ też, że samo zamknięcie pliku bez zapisywania nie wyzwala żadnej fazy , nawet „bezpiecznej” bezstratnej kompresji. Z tego powodu samo otwarcie i zamknięcie pliku nie może obniżyć jakości obrazu .

The Spooniest
źródło
Re „nie ma sensu zapisywać” Martwiłem się o to, co zrobiłby program, gdybym po prostu edytować metadane (komentarz, uwagi), gdy interfejs użytkownika jest otwarty-edytuj-zapisz i nie ma specjalnych wskazówek, że dane obrazu są kopiowane ale nie ponownie skompresowany.
JDługosz
„Lossy dekompresja” jako koncepcja ma sens, chociaż nie jestem świadomy niczego, co ją wdraża. Skompresowany plik zawiera pewną ilość danych; można sobie wyobrazić algorytm dekompresyjny, który wyodrębnia tylko wersję tych danych w niskiej rozdzielczości. Może to być znacznie szybsze niż wyodrębnianie wszystkich dostępnych danych, a na przykład można użyć takiego algorytmu, aby uzyskać podgląd. (Na przykład JPEG kompresuje obraz jako sekwencję 8x8 bloków; możesz wyodrębnić średni kolor każdego bloku i renderować go jako pojedynczy piksel dla podglądu w rozmiarze 1/8.)
David Richerby
@jdlugosz Programy, które zasadniczo aktualizują tylko metadane, nie dekompresują / nie kompresują części obrazu JPG. Po prostu kopiują tę część, tak jak jest w nowym pliku. Format pliku JPG jest skonstruowany w taki sposób, że jest to w rzeczywistości łatwiejsze i mniej pracochłonne, aby to zrobić, jeśli potrzebujesz tylko zaktualizować metadane. Ale wszystko zależy od oprogramowania. Jeśli jest to głupie w sposobie, w jaki robi rzeczy, nie ma możliwości obejścia tego (oprócz korzystania z innego oprogramowania).
Tonny
@DavidRicherby Istnieje wiele programów, które używają silnika dekompresyjnego do podglądu i tym podobne. Większość internetowych albumów fotograficznych robi to w celu generowania miniatur i wysyłania wersji o niskiej rozdzielczości do przeglądarki z małym wyświetlaczem. W MacOSX robią to widoki miniatur w Finderze i iPhoto. Podejrzewam, że miniatury w Eksploratorze w Windows też to robią, ale nie jestem tego pewien.
Tonny
W rzeczywistości AIUI, zarówno kompresja JPEG, jak i dekompresja, może (nieco) być stratna. Oznacza to, że nie można dokładnie zrekonstruować oryginalnego obrazu ze skompresowanych danych i nie można (zawsze) dokładnie zrekonstruować skompresowanych danych ze zdekompresowanego obrazu. W większości przypadków AFAIK może się to zdarzyć z powodu obcinania: podczas odwzorowywania skompresowanych współczynników YUV DCT z powrotem na 8-bitowe kolory pikseli RGB, niektóre piksele mogą otrzymać wartości kolorów mniejsze niż 0 lub większe niż 255, które zostaną przycięte.
Ilmari Karonen
4

Samo otwarcie i zamknięcie pliku JPEG nie powinno wywoływać polecenia zapisu (w żadnym znanym mi programie) i dlatego nie ma miejsca na ponowną kompresję.

W czasach, w których faktycznie ROBISZ, kliknij „zapisz”, to, co się stanie, zależy od wprowadzonych zmian i tego, jak inteligentny jest dany program graficzny.

Użytkownik CutNGlass wspomniał już o przykładzie inteligentnego programu graficznego „Better JPEG”, który wykorzystuje fakt, że obrazy JPEG składają się z wielu niezależnie zakodowanych prostokątnych bloków pikseli i tylko te, które naprawdę muszą być, są ponownie -kompresowane podczas zapisywania obrazu. Na przykład za pomocą takiego programu można usunąć efekt czerwonych oczu, a po zapisaniu obrazu JPEG tylko bloki, na które wpłynęła zmiana, są ponownie kompresowane. http://www.betterjpeg.com/features.htm

Ta technika unikania konieczności ponownej kompresji dowolnej części obrazu JPEG, która nie wymaga ponownej kompresji, to tak naprawdę „stare wiadomości” (nie jestem ekspertem i znam ją od ponad dekady), więc sądzę, że uznałem to za pewnik, że wszystkie dobre programy do obsługi obrazów poradziłyby sobie z tym doskonale (co oznaczałoby, że normalnie nie byłoby żadnej ponownej kompresji po otwarciu obrazu JPEG i naciśnięciu „zapisz”, ponieważ program wiedziałby, że nie wprowadzono żadnych zmian do żadnych bloków i po prostu pozostawił je nietknięte), ale patrząc na to pytanie i jego różne odpowiedzi, mogę tylko stwierdzić, że ten WCIĄG nie jest prawdą! * Być może programowanie takich rozwiązań jest bardziej skomplikowane, niż sądzę - w przeciwnym razie wszystkie programy obsługujące JPEG miałyby to lata temu! *

Carl
źródło
Witaj nowy użytkowniku. Dzięki za udział, dodanie linku do betterjpeg jest przydatnym dodatkiem. Z perspektywy deweloperów sytuacja wygląda tak, jakbyśmy to zrobili, w skrajnym przypadku - aby była użyteczna, polega ona na częściowej edycji przez użytkownika ORAZ o dokładnie identycznych ustawieniach jakości wyjściowej ORAZ pliku źródłowego będącym jedną z niewielu opcji kodowania JPEG . W przypadku nakładu pracy nie ma wystarczających korzyści.
James Snell
Cześć @JamesSnell! Po pierwsze, naprawdę doceniam twoją opinię i wyjaśnienie, dlaczego wszystkie programy do obsługi obrazów nie robią wszystkiego, aby uniknąć degradacji plików JPEG, gdy tylko jest to możliwe. Muszę jednak powiedzieć, że jest to subiektywne, jeśli włożenie tego programu w programowanie jest zbyt pracochłonne i jeśli przypadek użycia reprezentuje „skrajne przypadki skrajne”, czy nie! Zależy to od liczby formatów obrazu obsługiwanych przez program i od tego, jak często używa się JPEG, i zależy od tego, jak analny jesteś, że nigdy nie chcesz stracić niczego, czego nie musisz stracić (w tym przypadku niepotrzebna utrata jakości obrazu) .
Carl
Powiedziałbym również, że ponieważ JPEG jest najpopularniejszym formatem obrazu na świecie, co samo w sobie sprawia, że ​​jest to coś innego niż „skrajny przypadek” (przynajmniej słowo „ekstremalne” powinno zostać usunięte ). Jeśli weźmiesz również pod uwagę fakt, że ta technika obsługi bloków, jeśli została zaimplementowana w programie do obróbki obrazów, może być stosowana w różnych sytuacjach (częściowe modyfikacje, takie jak usuwanie efektu czerwonych oczu; obracanie / przerzucanie obrazu; przycinanie), wskazuje także na coś innego niż „skrajny przypadek”. To może nie być NAJBARDZIEJ żądana funkcja, ale jednocześnie jestem pewien, że zostanie to docenione!
Carl
1
Carl, zgodziłbym się z @JamesSnell, że jest to wyjątkowy przypadek - i pracowałem nad popularnym edytorem obrazów, więc mam tutaj trochę doświadczenia. Po otwarciu plik jest kopiowany do nieskompresowanej wersji w pamięci w celu edycji, a oryginał jest natychmiast odrzucany . Oszczędza to pamięć i daje możliwość korzystania z dowolnego formatu pliku jako źródła. Widziałem oprogramowanie, które potrafi bezstratnie odwracać lub obracać pliki JPEG, ale jest to bardzo wyspecjalizowana funkcja. Program, do którego linkujesz, jest jedynym edytorem, jaki widziałem, który rozszerza tę funkcję na edycję ogólną.
Mark Ransom,
Dzięki za ważenie, Mark - i dzięki za wgląd. Jednak nadal nie nazwałbym tego „przypadkiem na krawędzi”, ponieważ mówimy o bardzo powszechnych typach edycji przy użyciu najpopularniejszego typu pliku obrazu na świecie ... Programiści chcą to uprościć i być może nie dbają wystarczająco o degradacji obrazu, aby czuła się „warta tego”, aby sobie z tym poradzić, wyjaśnia, dlaczego większość programów graficznych nie radzi sobie z tym, ale nie czyni go „przypadkiem na krawędzi”. Plik JPEG jest zwykle znacznie mniejszy niż wersja nieskompresowana, więc można go przechowywać w pamięci i dodać tę funkcjonalność.
Carl
3

Na pewno nie stracisz żadnej jakości, po prostu ją przeglądając. Ale, jak wskazano powyżej, możesz stracić jakość obrazu podczas zapisywania go bez wprowadzania zmian, jeśli edytor skompresuje go podczas zapisywania pliku . Załóżmy na przykład, że masz plik JPEG bez kompresji:

  1. Otwierasz go w GIMP-ie, nie wprowadzasz żadnych zmian i zapisujesz
  2. GIMP zapyta Cię, ile chcesz kompresji (jakość)
  3. Podajesz 90% jakości (domyślnie)

Zrób to 20 razy, a zobaczysz znaczny spadek jakości, ponieważ został skompresowany 20 razy. Jeśli zapiszesz go bez kompresji (100% jakości), nie zobaczysz żadnych zmian.

Piegi
źródło
3
JPEG zawsze ma kompresję; w przypadku JPEG nie ma czegoś takiego jak „brak kompresji”. Jest z natury stratny. Jednak przepuszczenie obrazu [skompresowanego JPEG] przez kompresor JPEG o jakości 100% może nie spowodować utraty jakości.
Lekkość ściga się z Monicą
2
@geometrikal Naprawdę?
Rawling
1
@geometrikal zdecydowanie nie przypadek
mattdm
2
Przykład utraty jakości z ponownym oszczędzaniem na tym samym poziomie jakości: photo.stackexchange.com/a/34192
mattdm
2
Należy również pamiętać, że 100% jakości nie oznacza braku kompresji.
mattdm
2

Zdecydowanie, jak każdy plik, jeśli nie klikniesz „zapisz”, ale po prostu zamkniesz plik, nie zostaną wprowadzone żadne zmiany. (pomyśl o tym jak o dokumencie Doc, który właśnie otwierasz i zamykasz)

Jeśli dokonasz zmian, większość programów wyświetli powiadomienie z pytaniem, czy chcesz „zapisać zmiany”

Więc odpowiedź jest zdecydowanie nie na twoje pytanie.

Mam nadzieję, że to pomaga.

Dan R.
źródło
1

Po prostu:

  • Otwarcie: bez utraty jakości
  • Kopiowanie: bez utraty jakości
  • Wyświetlanie: bez utraty jakości
  • Zapisywanie bez edycji: kopiowanie, bez utraty jakości *
  • Zapisywanie tylko z edycjami metadanych: bez utraty jakości *
  • Oszczędzanie ze zmianami jakości kompresji: utrata jakości
  • Zapisywanie po edycji danych obrazu: utrata jakości

* W zależności od programu źle zaimplementowane programy mogą faktycznie ponownie się skompresować, nawet jeśli nie są potrzebne, co powoduje utratę jakości

Dekodowanie jakichkolwiek danych cyfrowych jest bezstratne. Nie ma jednego formatu cyfrowego, w którym zwykłe dekodowanie i wyświetlanie zmieniałoby dane.

Tylko rekompresja danych obrazu może być potencjalnie stratna. Niektóre operacje edycji, które w rzeczywistości są po prostu edycjami metadanych, nie powinny powodować utraty jakości, na przykład obrót EXIF ​​jest bezstratny.

Lie Ryan
źródło
Możliwe jest, że program wygeneruje plik przy użyciu danych skopiowanych dosłownie z części obrazu, które nie uległy zmianie, ale wygeneruje nowe skompresowane dane dla innych części. Na przykład Kreator JPEG pozwala wyróżnić „ważne” obszary JPEG i pozostawić je bez zmian, jednocześnie agresywnie kompresując inne mniej ważne obszary obrazu o różne wielkości.
supercat
Kopiowanie pliku (w Eksploratorze, Finderze itp.) Nie spowoduje utraty jakości. Otwarcie obrazu, wykonanie zaznaczenia wszystkich, skopiowanie, nowego obrazu z kopii, a następnie zapisanie spowoduje utratę jakości.
fzwo
@ superupat - podstawianie bloków jest możliwe tylko dla niektórych schematów kodowania jpeg. Ale opcja selektywnej jakości (jak tylko w niektórych obszarach) może zapewnić interesujące oszczędności miejsca bez poważnego pogorszenia obrazu w Internecie.
James Snell,
@JamesSnell: Przed wiekami korzystałem z Kreatora JPEG; Nie szukałem, czy / jak został zachowany lub zaktualizowany, ale może pozwolić na wielkie oszczędności miejsca w przypadkach, gdy zdjęcie zawiera kilka miejsc, w których potrzebne są szczegóły i wiele obszarów, w których nie jest. W niektórych przypadkach rozmycie wszystkiego oprócz głównych obiektów na obrazie może poprawić estetycznie obraz, jednocześnie zmniejszając rozmiar pliku.
supercat
1

Po prostu nie .

Aby być konkretnym. Podczas zapisywania obrazu JPEG masz pewne straty, ponieważ JPEG jest definiowany jako kompresja stratna.

Obraz jest kompresowany przy użyciu kodowania Huffmana, jeśli się nie mylę. Teraz, gdy edytor zdjęć otwiera obraz, nie dekompresuje go. Po prostu dekoduje skompresowany obraz, aby ekran mógł pokazać, co w nim jest.

Ale po wprowadzeniu zmian i ponownym zapisaniu obraz jest ponownie kompresowany do nowego formatu JPEG z większą utratą danych. Oprogramowanie takie jak GIMP pyta jednak, ile chcesz jakości, dzięki czemu możesz wybrać 100%, aby zachować istniejącą jakość.

Teraz otwieranie i zamykanie obrazu bez wprowadzania zmian nigdy nie będzie miało znaczenia, w jaki sposób jest przechowywany i jakie dane są tracone. Otwarcie go do przeglądania, a następnie zamknięcie nie powoduje żadnych zmian w pliku. Bez względu na przypadek (mp3, obraz, dokument słowny). Ponieważ nic nie jest zapisane, jakość zawsze pozostanie taka sama.

Ale jak powiedzieli poprzednie odpowiedzi, jeśli naprawdę martwisz się utratą danych, możesz po prostu użyć innych formatów, takich jak png lub tiff.

John Demetriou
źródło
2
Pamiętaj, że nie zachowasz istniejącej jakości podczas ponownego zapisywania zdjęcia w GINMP przy użyciu 100% wartości „ustawienia procentu jakości”. Ustawia tylko niektóre parametry używane przez enkoder na najwyższym możliwym poziomie jakości. Te ustawienia nie są bezstratne.
Hugo,
2
Nie ma problemu. Możesz przeczytać więcej na ten temat w tym pytaniu .
Hugo,
0

Wydaje się, że nawet w tych odpowiedziach jest dużo dezinformacji.

JPEG to standard kodowania stratnych bloków. Jest to kod w dziedzinie częstotliwości, który uzyskuje swoją kompresję, reprezentując komponenty obrazu o wyższej częstotliwości z mniejszą precyzją. Rozmiar bloku to 8 x 8 pikseli.

Aby zakodować obraz JPEG, weź każdy blok, wykonaj 2-D DCT i zapisz wynik w rodzaju zygzakowatego wzoru z coraz mniejszą liczbą bitów, zaczynając od najniższej częstotliwości, a kończąc na najwyższej. Profilem precyzji zarządza jedna zmienna jakości.

Tak długo, jak raz wykonałeś ten proces na bloku, możesz dekodować i ponownie kodować tyle razy, ile chcesz, bez utraty jakości obrazu (o ile zawsze używasz tej samej zmiennej jakości). To nie jest przesada; proces dekodowania i ponownego kodowania bloku jpeg może być całkowicie bezstratny, a każda aplikacja do edycji warta jego soli może już to zrobić.

Co to oznacza dla osoby edytującej obraz? Jeśli otworzysz obraz i zapiszesz (ponownie zakodujesz) z tą samą jakością obrazu, nie nastąpi utrata jakości (aplikacja do edycji powinna być w stanie powiedzieć ci o zmiennej jakości użytej do kodowania obrazu). Jeśli otworzysz obraz i edytujesz tylko niektóre z nich, jedynymi blokami, które w ogóle się zmienią, są edytowane bloki 8x8. Wszystko inne będzie dokładnie takie samo.

Steve Cox
źródło
2
Czy to tak ?
Rawling
1
Nie zbadałem dokładnie, ale zakładam, że to zaokrąglanie błędów sprawia, że ​​nie do końca tak jest.
mattdm
Jeśli program używa tej samej macierzy Q, a Ty zmieniasz tylko izolowane regiony, podsumowanie @stevecox jest poprawne. Jeśli używany jest ten sam program, to samo ustawienie suwaka powinno dać te same parametry wewnętrzne. Kadrowanie od lewej / góry może zmienić wyrównanie bloku; ogólna zmiana, taka jak odcień i jasność, dotyka wszystkiego i albo może wprowadzić straszliwą degradację poza nominalną jakość kompresji. Jeśli oryginalny zapis był bardzo wysokiej jakości, efekty będą subtelne, ale kumulatywne.
JDługosz
5
-1 Właśnie wykonałem szybki eksperyment z Photoshop CC i wielokrotne otwieranie i zapisywanie obrazu z dokładnie tymi samymi ustawieniami powoduje za każdym razem inny plik, w porównaniu do oryginału w trybie mieszania „różnicy”. Najwyraźniej Photoshop nie jest „wart swojej soli”. Nie mogę wypowiadać się w imieniu innych redaktorów, ale założę się, że pieniądze są takie same. Państwo mogli napisać program bardzo ostrożnie, aby uniknąć błędów zaokrąglania podczas przerwy dekompresji i ponownej kompresji obrazu, ale nie miałoby sensu - JPEG nie jest dobry format pośredni, kropka.
Matt Grum
3
@ SteveCox Otworzyłem obraz w Photoshopie, zapisałem go jako jakość JPEG 7, otworzyłem ten JPEG i zapisałem jako jakość JPEG 7, a następnie powtórzyłem 5 razy. Następnie porównałem pierwszy JPEG z 5. JPEG. To, co robi implementacja referencyjna, ma znaczenie akademickie tylko wtedy, gdy wszyscy główni redaktorzy powodują obniżenie jakości.
Matt Grum
0

Prosta odpowiedź brzmi: „To zależy”.

Czy robi to różnicę, jeśli:

Otwieram obraz w standardowej przeglądarce zdjęć i po prostu „zamykam” zdjęcie?

Powinno być bezpieczne, ponieważ widz nigdy nie powinien mieć możliwości zmiany obrazu.

Czy mogę otworzyć obraz w Photoshop Elements Editor i tam go zamknąć?

Nie powinien zmieniać obrazu.

Jeśli po prostu zamknę i zrób zdjęcie a ponownie je zapiszesz?

Zdjęcie końcowe nie powinno zmieniać obrazu. Ponowne zapisanie obrazu prawdopodobnie go zmieni, w zależności od używanych wtyczek.

Jednym z powodów jest wiele różnych odpowiedzi na pytanie „kiedy zamknięcie lub zapisanie pliku JPEG powoduje obniżenie jakości obrazu, a kiedy nie?” polega na tym, że zależy to od wielu różnych rzeczy, w tym: od oprogramowania używanego do edycji obrazu, wtyczek zainstalowanych w tym oprogramowaniu, od tego, czy oprogramowanie wykonuje „automatyczne zapisywanie”, oraz od ustawień, których używasz kiedy zapiszesz obraz jpg! Właśnie dlatego nie edytuję oryginalnych plików.

Nie używam Photoshopa, ale dostępna jest dla niego wtyczka, która ma pomóc w rozwiązaniu konkretnego problemu - unikając utraty jakości obrazu podczas zapisywania JPEG: http://www.betterjpeg.com /jpeg-plug-in.htm

Lepsza wtyczka JPEG Lossless Resave dla Adobe Photoshop i Adobe Photoshop Elements to narzędzie zaprojektowane w celu uniknięcia strat rekompresyjnych podczas ponownego zapisywania edytowanych obrazów JPEG w Photoshopie. Wtyczka wykorzystuje fakt, że obrazy JPEG składają się z kilku małych niezależnych bloków i nie kompresuje niezmienionych bloków.

CutNGlass
źródło
0

Interesujące zestawy odpowiedzi. Ale niektóre nadal wprowadzają w błąd. Spróbuję podsumować.

Absolutnie nie

1) Otwarcie pliku w żaden sposób go nie usuwa. Również go zamykam. Nie w przeglądarce ani programie do edycji.

Istnieje szansa, że ​​plik różni się w różnych programach, ale może to być spowodowane tym, że ten program interpretuje niektóre informacje, takie jak tryb kolorów lub profil kolorów. Ale ten proces to tylko czytanie.

Istnieje szansa na małe zmiany

2) Wykonywanie operacji bez losowych, takich jak obracanie obrazu. Zwykle programy po prostu ponownie zamawiają dane pliku jpg, bez analizowania i ponownej kompresji. Ale nie postawiłbym rąk na ogień dla wszystkich programów, które mają to zrobić.

Niewielkie nieuzasadnione zmiany

3) Otwieranie i zapisywanie z tą samą kompresją w tym samym programie.

Pierwsza rekompresja odbywa się przy pierwszym zapisaniu pliku jpg. Jeśli plik zostanie zapisany po raz drugi z tymi samymi ustawieniami, pierwotna utrata danych już się zakończyła, ale niewielkie zmiany można zastosować ponownie. Nie w takim samym stopniu jak pierwszy, ale zauważalne jest robienie tego kilka razy. Ale to zależy od programu.

Zauważalne zmiany

4) Najbardziej oczywistym jest oszczędzanie przy innym ustawieniu kompresji.

Nie tylko w „skali” na czymkolwiek ma program, ale także zastosowany algorytm. Jest to trochę zbyt techniczne, ale istnieją co najmniej dwa główne algorytmy kompresji 4: 4: 4 i 4: 2: 2.

Możesz użyć „suwaka” w swoim programie, aby uzyskać najwyższą „jakość”, ale jeśli twój program używa 4: 2: 2, a oryginał był w formacie 4: 4: 4, będziesz miał znaczną utratę danych.

Oto mały artykuł, który napisałem kilka lat temu, abyś mógł zobaczyć, co oznacza utrata danych, jest w języku hiszpańskim, ale możesz użyć tłumaczenia google: http://otake.com.mx/Apuntes/PruebasDeCompresion2/1-CompresionJpgProceso.htm

Całkowity bałagan

5) Jeśli otworzysz obraz i zapiszesz go ponownie w programie, który ma ograniczone możliwości. Na przykład viwer może tylko zapisywać pliki RGB i nie działać poprawnie z plikami CMYK, a może nie rozumie osadzonego profilu kolorów. Możesz całkowicie zepsuć swój obraz po zapisaniu.

6) Korzystanie z dużej kompresji. Zapisujesz go na swojej stronie i kompresujesz. Nie usuwaj oryginałów pease!

Tylko w edytowanej części obrazu

7) Rekompresja jest zwykle wykonywana na całym obrazie, ale jak wspomniałem w punkcie 3, nie jest to dużo, jeśli obraz się nie zmienił. Kiedy edytujesz obraz, analiza musi zostać wykonana ponownie w tym edytowanym fragmencie.

Pamiętaj, że edycję można podzielić na trzy grupy.

a) Korekty kolorów, kontrast itp.

b) Zmiana jednej części obrazu (czerwone oczy, usunięcie osoby, czyszczenie niepożądanych miejsc)

c) Całkowicie nowy kolaż.

Tak więc w niektórych przypadkach obraz jest zupełnie inny, przynajmniej z punktu widzenia analizy i rekompresji.

W tym poście: /photo//a/67434/37321 użytkownik wspomniał o programie, który wykonuje bardzo sprytną analizę istniejącej kompresji i nie kompresuje jej ponownie, jeśli nie jest to konieczne.

Rafael
źródło
0

Tak, oczywiście, że tak! Zrobię to z przykładowym obrazem i jakością JPEG 30, aby było szybkie Obraz początkowy. (160 Kb) wprowadź opis zdjęcia tutaj

Pierwsza runda (10 Kb) wprowadź opis zdjęcia tutaj

Druga runda (9 KB) wprowadź opis zdjęcia tutaj

Tak więc JPEG nie obniża znacząco jakości obrazu, o ile nie zmieniasz rozmiaru ani nie zmieniasz metryki jakości. Obraz będzie się powoli pogarszał, ale nieznacznie. A teraz usuwam tylko 4 piksele z obrazu (kolumna po prawej). I zapisz ponownie. wprowadź opis zdjęcia tutaj

Znaczące pogorszenie. Aby wyjaśnić, że musimy zagłębić się w algorytm JPEG. W każdym razie, jeśli znajdziesz się w takiej sytuacji, miej to na uwadze - to nie koniec. Istnieje świetne oprogramowanie do usuwania szumów JPEG, na przykład super-rozdzielczość i ulepszenia obrazu sieci neuronowej. Wrzuciłem ostatnie zdjęcie (najgorsze) do tej usługi i oto co mam. Naprawdę fajny wynik. wprowadź opis zdjęcia tutaj

Sofiia Shvets
źródło
Jakie oprogramowanie ty otwieranie i zamykanie z ? Czy na pewno Twoje oprogramowanie nie zapisuje (a zatem ponownie kompresuje) obraz po jego zamknięciu?
mattdm
Po prostu podstawowe ponowne zapisywanie w Photoshopie
Sofiia Shvets
1
Ponieważ pytanie dotyczy kilku różnych sytuacji, ta odpowiedź jest myląca, ale nie wyjaśnia tego.
mattdm