91 Stimmen

Ist es möglich, die Qualitätsstufe eines JPEGs zu bestimmen?

Dies ist eigentlich eine zweiteilige Frage, da ich noch nicht ganz verstehe, wie diese Dinge funktionieren:

Meine Situation: Ich schreibe eine Web-App, mit der der Benutzer ein Bild hochladen kann. Meine App ändert dann die Größe auf etwas anzeigbar (z. B. 640x480-ish) und speichert die Datei zur späteren Verwendung.

Meine Fragen:

  1. Ist es möglich, aus einer beliebigen JPEG-Datei die Qualitätsstufe zu ermitteln, so dass ich beim Speichern des verkleinerten Bildes dieselbe Qualität verwenden kann?
  2. Ist das überhaupt von Bedeutung? Sollte ich alle Bilder mit einer angemessenen Stufe (z. B. 75-80) speichern, unabhängig von der ursprünglichen Qualität?

Ich bin mir da nicht so sicher, denn ich denke, wenn jemand ein 5-Megapixel-Bild mit der Qualität 0 speichern würde, wäre es so blockig wie möglich. Bei einer Verkleinerung des Bildes auf 640x480 würde die Blockhaftigkeit geglättet werden und kaum weniger auffällig... bis ich es wieder mit Qualität 0 gespeichert habe...

Am anderen Ende des Spektrums, wenn es ein Bild mit 800x600 und q=0 gibt, wird die Größenänderung auf 640x480 nichts daran ändern, dass es wie völliger Mist aussieht, also wäre das Speichern mit q=80 überflüssig.

Bin ich überhaupt nah dran?

Ich verwende die GD2-Bibliothek auf PHP, falls das von Nutzen ist

146voto

DuyLuc Punkte 1554

Sie können den Komprimierungsgrad mit der Funktion identify Werkzeug in ImageMagick. Download- und Installationsanweisungen finden Sie auf der offizielle Website .

Nach der Installation führen Sie den folgenden Befehl in der Befehlszeile aus:

identify -format '%Q' yourimage.jpg

Dies wird

I

27voto

Ash Punkte 58914
  1. JPEG ist ein verlustbehaftetes Format. Jedes Mal, wenn Sie ein JPEG-Bild unabhängig von der Qualitätsstufe speichern, wird die tatsächliche Bildqualität verringert. Selbst wenn Sie also eine Qualitätsstufe aus der Datei erhalten haben, können Sie diese Qualität nicht beibehalten, wenn Sie ein JPEG erneut speichern (selbst bei Qualität=100).

  2. Sie sollten Ihr JPEG mit einer so hohen Qualität speichern, wie Sie es sich in Bezug auf die Dateigröße leisten können. Oder verwenden Sie ein verlustfreies Format wie PNG.

JPEG-Dateien niedriger Qualität werden nicht einfach nur blockiger. Stattdessen wird die Farbtiefe reduziert und die Details von Bildabschnitten werden entfernt. Sie können sich nicht darauf verlassen, dass Bilder von geringerer Qualität blockig sind und bei kleineren Formaten gut aussehen.

Nach Angaben der JFIF spec. die Qualitätszahl (0-100) wird nicht in der Kopfzeile des Bildes gespeichert, wohl aber die horizontale und vertikale Pixeldichte.

15voto

JAR.JAR.beans Punkte 8824

F

$> identify -format '%Q' filename.jpg
   92%

12voto

ton4eg Punkte 1337

Der Jpeg-Komprimierungsalgorithmus hat einige Parameter, die sich auf die Qualität des Bildes auswirken.

Einer dieser Parameter sind Quantisierungstabellen, die festlegen, wie viele Bits für jeden Koeffizienten verwendet werden. Verschiedene Programme verwenden unterschiedliche Quantisierungstabellen.

Bei einigen Programmen kann der Benutzer die Qualitätsstufe 0-100 einstellen. Es gibt jedoch keine einheitliche Definition für diese Zahl. Ein mit Photoshop erstelltes Bild mit einer Qualität von 60 % benötigt 46 KB, während ein mit GIMP erstelltes Bild nur 26 KB benötigt.

Auch die Quantisierungstabellen sind unterschiedlich.

Es gibt noch weitere Parameter wie Unterabtastung, dct-Methode und andere.

Man kann also nicht alle mit einer einzigen Qualitätsstufe beschreiben, und man kann die Qualität von JPEG-Bildern nicht mit einer einzigen Zahl vergleichen. Aber Sie können eine solche Zahl wie Photoshop oder Gimp erstellen, die einen Kompromiss zwischen Größe und Qualität beschreibt.

Weitere Informationen: http://patrakov.blogspot.com/2008/12/jpeg-quality-is-meaningless-number.html

In der Regel wird das Bild auf eine geeignete Größe skaliert und anschließend als jpeg-Datei gespeichert. In diesem Fall haben große und mittlere Bilder die gleiche Größe und Qualität.

6voto

Raul Popa Punkte 61

H

  1. j

  2. j

s

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X