Wie kann ich einem JPEG-Foto einen Rand hinzufügen, ohne die Qualität zu beeinträchtigen?

Ich habe ein Foto im JPEG-Format mit der Auflösung 4680x3120. Ich möchte einen weißen Rahmen um dieses Foto hinzufügen und es in ein 5200 x 3467-Foto verwandeln (aus Druckgründen).

Natürlich ändere oder entferne ich nichts von dem Foto, ich füge einfach etwas hinzu. Daher kann dieses Verfahren im Prinzip verlustfrei sein. Wenn ich jedoch Paint verwenden würde, um diesen Rand hinzuzufügen, wird der Speichervorgang von Paint das Foto erneut in das JPEG-Format komprimieren, wodurch Informationen und Qualität verloren gehen.

Gibt es eine Möglichkeit (ein professionelleres Programm), einem JPEG-Foto etwas hinzuzufügen, z. B. einen Rahmen, ohne den ursprünglichen Teil des Fotos zu beeinträchtigen, ohne seine Qualität zu beeinträchtigen?

Antworten (7)

Obwohl Philips Antwort der beste Weg ist, ist es möglich, innerhalb der Sphäre von JPEG zu tun, was Sie wollen.

JPEG funktioniert, indem es Ihr Bild in Blöcke aufteilt, die als Minimum Coding Units (MCUs) bezeichnet werden und normalerweise jeweils 16 × 16 groß sind, und diese separat komprimiert. Sie können dies in Bildern sehen, wenn Sie die Komprimierungsstufe sehr hoch drehen. Bei vernünftigeren Komprimierungsstufen fügen sich die Blöcke so nahtlos ineinander, dass Sie nie die Grenzen sehen.

Wir können diese Tatsache ausnutzen, um einem Bild verlustfrei einen einfachen weißen Rand hinzuzufügen. Wir müssen einfach ein hohles Array aus weißen Blöcken erstellen, das der Größe des Ausgabebildes entspricht, und dann die ursprünglichen JPEG-MCU-Blöcke in die Mitte fallen lassen.¹

Diese Technik hat einen Nachteil: Sie funktioniert nur, wenn sowohl die Eingangs- als auch die Ausgangsbildgröße ein gerades Vielfaches der MCU-Größe sind. Wenn dies nicht der Fall ist, müssen wir einige der Blöcke am Rand zwischen dem weißen Rand und den Rändern des Originalbilds erneut komprimieren. Sie werden diesen Unterschied in der Ausgabe nicht sehen, wenn Sie sich von den übermäßig hohen JPEG-Komprimierungsstufen fernhalten, so dass es immer noch effektiv verlustfrei ist.

Mir ist kein Programm bekannt, das nur das kann. Das nächste, was mir bekannt ist, ist etwas, das die umgekehrte Operation ausführt: jpegtran hat eine Zuschneidefunktion, die Teile der Bildränder verlustfrei wegschneidet.² Dies geschieht, indem die abgeschnittenen MCUs entlang der Bildränder verworfen und diese drin gelassen werden die Mitte unberührt.

Die einfachste fertige Lösung, die ich kenne, ist das Plugin Better JPEG Lossless Resave für Photoshop. Es verwendet Techniken, die auf den oben genannten Ideen basieren, um MCUs aus dem Originalbild zu kopieren, wo immer es möglich ist, um zu vermeiden, dass sie aus der unkomprimierten Version neu erstellt werden, wie es Photoshop normalerweise tut.³


Abschweifungen:

  1. Sie könnten denken, dass der resultierende Rand nicht ganz weiß sein wird, da die Verluste von JPEG zu einer Art Farbunterschied in der Ausgabe führen. Ich habe einige Tests durchgeführt, und zumindest in Photoshop führt ein rein weißes Bild, das über JPEG Level 10 (dh "niedrige" Qualität) von Save For Web gespeichert wurde, zu einem decodierten Bild, das immer noch rein weiß ist.

    Ich habe dies mit zwei Tests festgestellt:

    Zuerst habe ich das JPEG als Ebene auf das Original geladen, den Mischmodus der obersten Ebene auf „Differenz“ eingestellt und dann eine Ebenen-Anpassungsebene darüber hinzugefügt, um zu versuchen, die Unterschiede zu vergrößern. Das resultierende Bild blieb schwarz, was „kein Unterschied“ anzeigte.

    Zweitens, als ich die erwarteten Unterschiede nicht sehen konnte, ließ ich die Einstellungsebene fallen und kehrte die JPEG-Ebene in den normalen Mischmodus zurück, nahm das Pipettenwerkzeug und suchte im gesamten Bild nach einem Pixel, das nicht als RGB angezeigt wurde (255.255.255 ) im Infobereich. Ich habe nie einen gefunden. Ich hatte erwartet, dass die Zahlen ein wenig flimmern würden, als ich über das Bild schrubbte, aber sie blieben felsenfest.

    Ich kann nur schlussfolgern, dass dies ein entarteter Fall des Codierungsalgorithmus ist: Reinweiße Blöcke bleiben durch die diskrete Kosinustransformation weiß .

    Interessanterweise passiert dies bei rein schwarzen Blöcken nicht . Zumindest mit der Implementierung von Photoshop werden sie beim Decodieren zu RGB (1,1,1), nicht zu RGB (0,0,0).

    Unterm Strich brauchen Sie sich keine Gedanken über Spritzer in diesem Grenzbereich zu machen, wenn Sie ein Bild drucken, das mit der obigen Technik erstellt wurde.

  2. jpegtranist ein Befehlszeilenprogramm, aber es gibt auch ein GUI-Windows-Programm, das auf demselben Code namens jpegcrop.

  3. Leider ist dieses Plugin nur für Windows verfügbar.

Ich habe ein Programm namens JPEG Wizard verwendet, das eine solche Funktionalität bietet. Es hatte auch eine sehr schöne Fähigkeit, verschiedene Komprimierungsverhältnisse auf verschiedene Teile eines JPEG anzuwenden. Man könnte also eine hohe Qualitätseinstellung für den Kopf und die Hände einer Person, eine mittlere Qualität für ihre Kleidung und eine niedrigere Qualität für den Hintergrund verwenden und so eine kleinere Datei, aber eine bessere Gesamtqualität erhalten, als wenn man für alles eine mittlere Qualität verwendet hätte.
Ich hatte keine Gelegenheit, es auszuprobieren, aber dieser Blogbeitrag deutet darauf hin, dass jpegtrandie Zuschneidefunktion von tatsächlich auch zum Erweitern verwendet werden kann. (Ich bin mir jedoch nicht sicher, welche Farbe die erweiterten Ränder haben.)
@mattdm: Ja, jpegtrankann das Bild auch erweitern, aber es füllt immer mit einem fest codierten mittleren Grau, RGB (128,128,128). bzero()Dies geschieht einfach, weil dies die einzige einfache Option ist, da Sie dies im DCT-Koeffizientenraum mit einem einfachen Aufruf tun können . Ich habe versucht, dies mit einem wilden Hack zu ändern , der nicht funktioniert, aber Ihnen ein Gefühl für die damit verbundene Hässlichkeit geben sollte. wirft frustriert die Hände hoch
@WarrenYoung: Um die Farbe der Füllblöcke zu ändern, müssten Sie vermutlich nur den ersten (DC) Koeffizienten ändern und die anderen auf Null belassen. Natürlich sind die Koeffizienten komprimiert, also ... sollte es auf jeden Fall machbar sein, aber ich stimme zu, dass es nicht so trivial ist, wie es scheinen mag.
@IlmariKaronen: Das klingt plausibel. Ein weiteres Problem mit meinem Patch ist, dass er das Programm segfaultet; Ich nehme an, dass ich die Größe dieser JBLOCK2D-Arrays falsch interpretiere, also schreibe ich in Speicherplatz, den ich nicht besitze. Fühlen Sie sich frei, Ihren eigenen Patch zu erstellen oder auf meinem zu riffeln. Ich glaube, ich habe dieses Kaninchen so weit ins Loch gejagt, wie es mir beliebt.
Zu Ihrem letzten Punkt: Die größten Einsparungen ergeben sich durch das Wegwerfen hochfrequenter Informationen. Der Gewinn durch das Wegwerfen der Genauigkeit der Farbe eines soliden Pixelblocks könnte nicht mehr als ein oder zwei Bytes betragen, also wird es nie oder fast nie gemacht. Wenn es einen Informationsverlust gibt, liegt es an der YUV<->RGB-Farbraumkonvertierung.
(Wie) Funktioniert das, wenn der Rahmen nicht ein Vielfaches von 16 Pixel dick ist? Ich vermute, dass Sie das Format brechen, wenn Sie dies auf der Binärebene von Hand tun.
@Raphael: Ich denke, wenn ich ein Programm schreiben würde, um dies als Hauptzweck zu tun, würde ich die oberen und linken Randgrößen unabhängig von der Benutzereingabe auf das nächste Vielfache von 16 runden. Bei 240 dpi für den Druck ergibt das einen maximalen Versatzfehler auf der Seite von 1,6 mm. Sie können wahrscheinlich einen so großen Fehler bekommen, weil das Papier beim Einzug in die Einzugsrollen rutscht. Dann würden Sie rechts und unten bis zu 15 Pixel des Bildes oder Randes erhalten, die neu kodiert werden müssen, bevor Sie zu "sauberen" weißen Pixelblöcken zurückkehren können, um diesen Rand fertigzustellen.

Denken Sie daran, dass Sie beim Speichern des Fotos in einem verlustbehafteten Komprimierungsformat an Qualität verlieren. Solange Sie das Foto nach dem Hinzufügen des Rahmens in einem verlustfreien Format (PSD, TIFF usw.) speichern, verlieren Sie nicht mehr Daten, als Sie bereits verloren haben, wenn Sie das Foto überhaupt erst als JPEG speichern.

Vielen Dank. Und das gilt auch, wenn Sie ein "schrottiges" Programm wie Paint verwenden, wenn Sie es zB in TIFF speichern?
Zumindest nach meinem Schnelltest verwendet Paint beim Speichern von TIFFs den verlustfreien LZW - Komprimierungsalgorithmus, sodass es in Ordnung aussieht.
Beachten Sie, dass dies wahrscheinlich die Größe des Bildes erheblich erhöht ...
Paint unterstützt auch PNG, das ebenfalls ein verlustfreies Format ist
+1 dafür, da die Antworten, in denen es um das Zurückspeichern in JPEG geht, nicht mit allen JPEG-Codierungsoptionen kompatibel sind.

Es ist nicht ganz verlustfrei, aber Sie können mit GIMP (oder einem anderen Editor mit einer ähnlichen Funktion) und den folgenden zwei Tricks ziemlich nahe kommen:

  1. Stellen Sie zunächst sicher, dass der Rand, den Sie hinzufügen, ein Vielfaches von 8 Pixel breit ist (und vorzugsweise ein Vielfaches von 16 Pixel).

    Dies ist wichtig, da der JPEG-Komprimierungsalgorithmus das Bild in 8×8-Pixel-Blöcke * aufteilt, beginnend in der oberen linken Ecke, und den verlustbehafteten Komprimierungsalgorithmus unabhängig auf jeden Block anwendet. So können Sie zumindest im Prinzip ein JPEG-Bild verlustfrei auffüllen, indem Sie ganze 8×8-Pixelblöcke um die vorhandenen herum hinzufügen. Wenn Sie jedoch versuchten, einen Rand hinzuzufügen, der keine ganze Anzahl von Blöcken breit war, würden die Blöcke im aufgefüllten Bild nicht mit denen im Original übereinstimmen, und ein gewisser Komprimierungsverlust wäre unvermeidlich.

    *) Tatsächlich verwenden die meisten JPEG-Bilder Chroma-Subsampling , was bedeutet, dass nur der Graustufenteil des Bildes tatsächlich in 8 × 8-Blöcke komprimiert wird, während die Chroma-Kanäle vor der Komprimierung um 50 % herunterskaliert werden, sodass ihre effektive Blockgröße 16 × beträgt 16 Pixel. Für beste Ergebnisse sollte Ihre Rahmenbreite also wirklich ein Vielfaches von 16 Pixeln sein. Allerdings kommt man in der Regel mit einem Rand von 8 (oder 24 oder 40 etc.) Pixeln davon, da ein kleiner Komprimierungsverlust im Chroma nicht sehr auffällt.

  2. Der zweite Teil des Tricks besteht darin, beim Speichern des endgültigen Bildes das Kontrollkästchen "Qualitätseinstellungen des Originalbildes verwenden" im Dialogfeld "Bild als JPEG exportieren" (unter "Erweiterte Einstellungen") zu aktivieren. Tun Sie dies auch dann, wenn es den Anschein hat, als würde dies zu einer geringeren Qualität führen, als Sie normalerweise verwenden würden!

    Durch diese Einstellung verwendet GIMP genau die gleichen Komprimierungseinstellungen wie für das Originalbild, wodurch normalerweise etwa 99 % der Komprimierungsverluste eliminiert werden, vorausgesetzt, Sie haben das Bild nicht zu stark bearbeitet und insbesondere die Blöcke in der Das neue Bild stimmt immer noch mit denen im Original überein. (Gelegentlich kommt es immer noch zu Verlusten durch Rundungsfehler, aber viel weniger als sonst.)


Als schnelle Demonstration habe ich dieses JPEG-Testbild von Wikimedia Commons genommen, das ursprünglich mit einer ziemlich niedrigen Qualitätseinstellung von 50 gespeichert wurde, und ihm mit der oben beschriebenen Methode einen schicken (sozusagen) 8-Pixel-Schwarz-Weiß-Rand hinzugefügt:

Testbild mit 8px Rand, meist verlustfrei

Hier ist der Unterschied zwischen dem Original (15,1 kB) und dem bearbeiteten Bild (16,7 kB), dargestellt mit dem Ebenenmodus "Kornextraktion" von GIMP:

Unterschied zwischen aufgefülltem Bild und Original

Sie können einige sehr leichte Farbfehler erkennen, die dadurch verursacht wurden, dass die Rahmenbreite kein Vielfaches von 16 ist, und (wenn Sie genau hinsehen) einige Blöcke, bei denen es aufgrund von Rundungen auch zu geringfügigen Verlusten im Luma-Kanal kam. Dennoch sind das Original und das aufgefüllte Bild visuell nicht zu unterscheiden, selbst bei 2-facher Vergrößerung und abwechselndem Umblättern zwischen ihnen.

Vergleichen Sie dies insbesondere mit dem Ergebnis der Erhöhung der JPEG-Qualität von 50 auf 60, bevor Sie das aufgefüllte Bild speichern, was das folgende 17,6-kB-Bild ergibt:

Testbild mit 8px Rand, Qualität von 50 auf 60 erhöht

Bei starker Vergrößerung sieht man definitiv, dass das bearbeitete Bild an manchen Stellen deutlich unschärfer ist als das Original, und der Unterschied mit Körnungsextrakt bestätigt dies:

Unterschied zwischen aufgefülltem Bild (bei q60) und Original

"Das Aktivieren dieses Kontrollkästchens scheint die Einstellung "Progressiv" nicht zu beeinflussen." Kein Fehler, da die progressive Codierung eine Codierungseinstellung ist, keine Qualitätseinstellung. Jpegtran kann Bilder verlustfrei in und aus Progressiv konvertieren.
@tepples: Du hast recht; Ich habe diesen Absatz entfernt. Aus irgendeinem Grund hatte ich den Eindruck, dass das Umschalten des progressiven Modus dazu führen würde, dass die Qualitätseinstellungen nicht übereinstimmen, aber ein kurzer Test scheint zu bestätigen, dass ich mich darin geirrt habe.
Diese Antwort missversteht, was die Einstellung "Qualitätseinstellungen aus Originalbild verwenden" bewirkt. Dies versucht nicht, ein neu codiertes Bild bestmöglich zu erhalten, sondern ungefähr die gleiche Verschlechterung (gleiche Quantisierer) auf das Bild anzuwenden, die beim letzten Mal angewendet wurde. Nach dem erneuten Speichern wird das Bild ungefähr doppelt so stark beeinträchtigt wie das Original, da es ein zweites Mal um den gleichen Betrag wie beim ersten Speichern verschlechtert wurde. Diese Einstellung ist nicht sinnvoll, um die Qualität zu erhalten; nur wenn Sie Bytes sparen möchten, indem Sie ein Bild erneut komprimieren, das bereits ziemlich degradiert war, und es Ihnen nichts ausmacht.
@thomasrutter: Ich kann einen Kommentar nicht ablehnen, also verweise ich Sie nur auf den ursprünglichen Forumsbeitrag, der die Funktion beschreibt , und insbesondere auf dieses Zitat: „ Wenn Sie nur ein paar Änderungen am Bild vorgenommen haben, dann erneut Wenn Sie dieselben Quantisierungstabellen verwenden, erhalten Sie fast dieselbe Qualität und Dateigröße wie das Originalbild. Dadurch werden die durch den Quantisierungsschritt verursachten Verluste im Vergleich zu dem, was passieren würde, wenn Sie unterschiedliche Quantisierungstabellen verwenden würden, minimiert. "
@thomasrutter: Wenn Sie diesem Beitrag nicht glauben, warum testen Sie ihn nicht einfach selbst (oder sehen Sie sich die Testbilder an, die ich in meine Antwort aufgenommen habe)? Es ist leicht zu überprüfen, dass das Öffnen eines JPEG-Bildes in GIMP und das erneute Speichern mit "Qualitätseinstellungen des Originalbildes verwenden" nur eine minimale (wenn auch leider nicht immer null) Verschlechterung verursacht, während die Qualitätseinstellung geändert wird (sogar geringfügig nach oben!) führt in der Regel zu deutlich höheren Quantisierungsverlusten.
Diese Beschreibung ist falsch; die einzige Möglichkeit, die Verluste bei der Quantisierung zu minimieren, besteht darin, die Quantisierung zu reduzieren; Das erneute Speichern mit einer sehr hohen Qualität (niedrige Quantisierung) ist viel effektiver, um die gleiche Qualität wie die Quelle zu erreichen, als das erneute Speichern mit denselben Quantisierern wie beim letzten Mal. Es gibt viele Fehlinformationen über diese Funktion im Internet und die Leute denken, dass es ein magischer Weg ist, die Qualität zu verbessern.
"Änderung der Qualitätseinstellung (auch nach oben!) führt in der Regel zu erheblichen Quantisierungsverlusten". Dies wird nicht passieren, so funktioniert die Quantisierung nicht, leider implizieren oder behaupten viele Quellen, dass dies der Fall ist. Führen Sie Tests mit PSNR oder SSIM oder einer anderen gängigen Metrik durch, die zeigt, dass dies der Fall ist (eine Änderung der Qualität nach oben führt zu einer schlechteren Qualität als gleiche Quantisierer), und ich werde korrigiert stehen, aber im Grunde ist es nicht wahr.
@thomasrutter: Okay, gut. Laden Sie dieses JPEG-Bild herunter , öffnen Sie es in GIMP und speichern Sie es zweimal erneut: einmal mit "Qualitätseinstellungen des Originalbilds verwenden" und einmal mit auf 40 erhöhter Qualität. Vergleichen Sie jedes JPEG mit dem unkomprimierten Basisbild . Mit ImageMagickcompare erhalte ich einen PSNR von 34,5826 für das ursprüngliche JPEG, 34,5752 für die Kopie, die mit denselben Qualitätseinstellungen erneut gespeichert wurde, und 34,3653 für die bei q40 erneut gespeicherte. Gut genug?
Nun, das ist interessant. Ist es ein lokales Maximum? Wie hoch auf der Qualitätsskala, bis der PSNR höher ist als das gleiche Q-Ergebnis? Ist es bei Q 41 höher? Frage 39? Oder braucht es mehr zB Q 50?
@thomasrutter: Ich weiß nicht; das ist nur das erste testbild und die ersten einstellungen die ich probiert habe. Ich habe alle von mir verwendeten Tools und Quellbilder verlinkt, damit Sie die Ergebnisse selbst reproduzieren können. Ich habe weniger als 15 Minuten gebraucht, um diesen Schnelltest durchzuführen, einschließlich des Googelns nach „PSNR“, des Lesens des Wikipedia-Artikels und des Suchens der ImageMagick-Hilfeseite, sodass Sie ihn in höchstens fünf Minuten reproduzieren können sollten. Sie sind derjenige mit seltsamen (und nachweislich kontrafaktischen) Ideen darüber, wie die JPEG-Komprimierung hier funktioniert, also würde ich sagen, dass es an Ihnen liegt, sie zu testen und nicht nur zu erwarten, dass Ihnen Daten mit dem Löffel zugeführt werden.
PS. Ich bin ziemlich oft im Chat , wenn Sie diese Diskussion lieber dort fortsetzen möchten.
Nur zum Vergleich, hier ist ein weiteres Beispiel in einer Antwort auf eine andere Frage. Mein theoretisches Verständnis stimmt mit Ilmari überein, aber zumindest in meinem Beispiel scheint die Praxis viel mehr mit dem übereinzustimmen, was Thomas sagt – zumindest wenn man mit einem stark herabgesetzten Bild beginnt. (Ich denke, der Grabstein ist ein schlechtes Beispiel für diesen Zweck, weil der Verlust von Details auf dem Stein weniger offensichtlich ist als auf der menschlichen Haut.)
@mattdm: Es scheint ziemlich softwareabhängig zu sein; Ich habe versucht, Ihre Ergebnisse aus dieser Antwort in GIMP zu reproduzieren, und es scheint, dass GIMP (mindestens v2.8.10) die JPEG-Qualität um einiges besser bewahrt als ImageMagick (unabhängig von der von Ihnen getesteten Version). Ihr erstes Bild, das einmal bei q75 gespeichert wurde, hat einen PSNR von 34,0298, während das bei q75 zweimal gespeicherte Bild nur einen von 32,8169 hat (und das 8-mal erneut gespeicherte Bild einen PSNR von 32,6459 hat). Im Vergleich dazu ergibt das einmalige Speichern desselben Quellbilds in GIMP bei q75 einen PSNR von 36,4560; Durch Öffnen und erneutes Speichern in derselben Qualität sinkt es nur geringfügig auf 36,3295.
@IlmariKaronen Cool – das ist gut zu wissen, denn in den meisten Fällen, in denen es mich interessiert, verwende ich Gimp.
@mattdm: Ps. Es scheint einen Unterschied zu geben, das JPEG direkt mit "Qualitätseinstellungen aus Originalbild verwenden" erneut zu speichern und es in ein neues Bildfenster zu kopieren und von dort aus zu speichern (wieder bei q75); Letzteres ergibt einen PSNR von 36,2973, etwas schlechter als das direkte erneute Speichern (aber immer noch viel besser als mit ImageMagick). Ich nehme an, das liegt daran, dass GIMP beim Kopieren und Einfügen alle Komprimierungseinstellungen vergisst, die beim Öffnen des JPEG als interne Metadaten gespeichert wurden.
Könnte diese besondere Diskrepanz mit dem verwendeten Chroma-Subsampling-Modus zusammenhängen? "Qualitätseinstellungen vom Originalbild verwenden" stellt auch das Chroma-Subsampling so ein, dass es mit dem Original übereinstimmt, nicht nur mit Q. Obwohl Sie das möglicherweise bereits tun.
@thomasrutter: Ich habe für alle meine Tests 4: 2: 0-Unterabtastung verwendet, da IME die allgemein gebräuchlichste Einstellung ist (und da dies für die ursprüngliche Grenzaufgabe die Worst-Case-Situation ist). Es ist auch das, was die Testbilder verwendet haben, die ich von Wikipedia heruntergeladen habe, also gibt es dort keinen Unterschied. Ich kann nicht mit 100%iger Sicherheit sagen, was mattdm verwendet hat, da er alle seine Bilder in PNG konvertiert hat, aber es sieht sicher auch nach 4:2:0 aus.

Tut mir leid, wenn das nicht genau das ist, was du wolltest, aber...

Es hört sich so an, als ob Sie einen weißen Rand als Hilfe für die Positionierung Ihres Bildes beim Drucken hinzufügen. Warum konzentrieren Sie sich nicht darauf, die Druckschnittstellen richtig zu lernen und solche zweifelhaften Hacks zu vermeiden? Das andere Problem, das dies aufwirft, ist, ob Sie dem Druckprogramm erlauben, die Größe Ihres 4680 x 3120-Bildes an die richtige DPI/Auflösung anzupassen. Dies kann schwerwiegendere Auswirkungen haben als das erneute Speichern eines JPEG.

Beides gültige Punkte, danke. Allerdings habe ich mein Foto bei einer dieser Online-Druckereien hochgeladen, sodass ich keine Kontrolle über den eigentlichen Drucker habe.

Die vorherigen Antworten sind sehr gut.

Ich werde nur einige "psychologische Aspekte" des JPG-Formats hinzufügen.

Wenn ein jpg gut vorbereitet ist, verliert es nur etwa 0,5% Informationen. Das ist in den allermeisten Fällen etwas, was das menschliche Auge nicht sehen kann. Sie brauchen ein Programm, um einige Analysen durchzuführen und die Unterschiede zu sehen (wie die Analyse, die Ilmari gerade durchgeführt hat).

"Gute Qualität" ist ein Prozess, nicht nur die Art und Weise, wie ein Dateiformat das Bild speichert. Ja, Sie haben die Datei noch einmal mit jpg neu komprimiert, weil Sie sie wirklich brauchten. Wenn es sich um eine kontrollierte Situation handelt, ist dies in Ordnung.

Sie brauchen es wirklich , es bedeutet, dass Sie kein anderes verlustfreies Format verwenden können, Sie sehr spezifische Speicher- oder Softwareanforderungen haben oder einen sehr engen Arbeitsablauf haben.

Wenn Sie wirklich über die Qualität besorgt sind, würden Sie Paint wahrscheinlich nicht verwenden. Das JPG-Format hat einige Konfigurationen, die Sie in Paint überhaupt nicht steuern können.

Hier ist meine Liste mit kostenlosen Programmen, mit denen Sie die JPG-Komprimierung wirklich steuern können, und die Option, die Sie auswählen müssen. (Alle im jpg-Speicherdialog)

Irfanview – Aktivieren Sie „Chroma-Farb-Subsampling deaktivieren“.

FastStone Image Viewer – Farbunterabtastung: Keine.

Gimp - Subsampling 4:4:4

Fazit. Verwenden Sie keine Farbe.

Eines habe ich noch nicht überprüft. Wenn alle diese Programme das eingebettete Farbprofil beibehalten. Ich werde meinen Beitrag später bearbeiten.

Jemand hat für diese Antwort -1 gestimmt. Normalerweise ist es mir egal, weil ich weiß, dass ich etwas Dummes sagen kann. In diesem speziellen Fall: Welcher Teil der Antwort ist falsch?
Ich habe nicht gestimmt (oben oder unten), aber vielleicht möchten Sie an Ihrer Rechtschreibung und Grammatik arbeiten, um einen besseren ersten Eindruck zu hinterlassen (und ehrlich gesagt auch, um Ihre Antwort leichter lesbar zu machen). Auch diese Frage hat bereits mehrere Antworten (und insbesondere meine ist ziemlich lang geworden); Irgendwann fangen einige Leute an, Antworten abzulehnen (oder zumindest nicht aufzuwerten), die den vorhandenen nicht eindeutig etwas Neues hinzufügen. Versuchen Sie außerdem, Ihre Antwort so zu strukturieren, dass die wichtigen Teile auf einen Blick hervorstechen; In diesem Fall ist der einzige Teil, den Sie fett hervorgehoben haben , eine unwichtige Fußnote.
Vielen Dank für deinen Kommentar Ilmari. Ich habe Mühe, auf Englisch zu denken, da es nicht meine Muttersprache ist. Ich werde nach einem Rechtschreibtool suchen. Ich bin mir nicht sicher, ob es eine Grammatik gibt. - Für den zweiten Teil des Kommentars verstehe ich, dass die Logik hinter StackExchange darin besteht, die Frage unabhängig zu beantworten, da der Fluss der Antworten nicht festgelegt ist, da sie die Reihenfolge ändern oder bearbeitet werden können. Ich werde mir das mal anschauen. (Ich habe den fettgedruckten Text entfernt) Nochmals vielen Dank. :Ö)
"es verliert nur etwa 0,5% Informationen" [Zitat erforderlich] :)
Hey Warren, hier ist es: otake.com.mx/Apuntes/PruebasDeCompresion2/… Es ist auf Spanisch, bitte verwende vorerst Google Übersetzer, und ich muss es aktualisieren. Tatsächlich sind es weniger als 0,392 % :)

IrfanView funktioniert gut für mich für Bildersätze. Hier sind einige Anleitungen

Hier ist meine gespeicherte Prozedur zum Einfügen von Grenzen - Infran-Prozedur zum Hinzufügen einer Grenze

  1. Rechtsklick auf das Bild, 'Öffnen mit'->'InfranView'
  2. Drücken Sie 'b'
  3. Aktivieren Sie oben links „Erweiterte Optionen verwenden“ und drücken Sie „Erweitert“.
  4. Aktivieren Sie „Leinwandgröße“ und drücken Sie „Einstellungen“.
  5. Geben Sie jede Rahmenbreite ein (linke Seite, rechte Seite, obere Seite, untere Seite)
  6. Drücke OK'
  7. Wählen Sie 'Vorhandene Dateien überschreiben'
  8. Drücke OK'
  9. Geben Sie das Ausgabeverzeichnis 'Ausgabeverzeichnis für Ergebnisdateien:'
  10. Navigieren Sie zu dem Bild und doppelklicken Sie darauf, um es in der oberen Liste zu umranden. Dadurch wird es der Liste „Eingabedateien:“ in der unteren Liste hinzugefügt
  11. Drücken Sie 'Stapel starten'
Können Sie erklären, was an dieser Methode besonders ist, damit sie die Anforderungen des Posters erfüllt, die Bildqualität nicht zu beeinträchtigen? Beim ersten Lesen scheint dies das JPEG durch den gesamten Dekomprimierungs-Neukomprimierungszyklus zu schicken, den das Poster zu vermeiden versucht.
hmmm, Sie bringen einen interessanten Punkt in Bezug auf den Image-Lebenszyklus durch den Prozess, den ich hier aufliste, an den ich nicht gedacht habe. Vielleicht hast du Recht, wenn du möchtest, dass ich meinen Beitrag lösche oder ändere, dann lass es mich bitte wissen :)!

Sie können dies kostenlos mit Adobe Acrobat tun! Klicken Sie mit der rechten Maustaste auf Ihr Foto und dann auf Mit Adobe Acrobat öffnen. Klicken Sie in Adobe auf PDF bearbeiten. Wählen Sie das gesamte Bild aus (Strg A) und verkleinern Sie es dann etwas, sodass es einen weißen Rand hat. Klicken Sie dann auf Exportieren als und wählen Sie Ihr gewünschtes Format (JPEG, PNG usw.).

Können Sie erklären, wie dies den Qualitätsverlust durch den JPEG-Dekomprimierungs-/Neukomprimierungszyklus vermeidet?