Roger: image erstellen - komprimierung zu hoch?

moin!

ich schreibe in eine jpeg-grafik ein wort hinein, mit folgendem code:

  
$termine = imagecreatefromjpeg($termine_src);  
$color1 = ImageColorAllocate($termine,0,0,0);  
ImageTTFText($termine, $size, $degree, 3, 35, $color1, $font, $termine_text[0]);  
imagejpeg($termine, $termine_dest);  

die grafik ist fast einfarbig (mit einigen schatten), deswegen jpeg. die dateigröße vorher ist 2kb.
nach der "beschriftung" ist die datei auch noch knapp 2kb groß aber um die schrift sind sehr deutlich die häßlichen jpeg-artefakte zu sehen. wie kommen die da hin?
die originaldatei ist mit 100% abgespeichert worden (also keine/wenig kompression). die größe der datei ist zunächst zweitrangig. wie bekomme ich die artefakte weg (außer png zu nehmen, da kommt die größe wieder mit ins spiel - die datei wird dann 18kb groß)?

gruß.
roger.

--
meine freundin sagt, ich wäre neugierig.
so steht's zumindest in ihrem tagebuch.
  1. Hi

    Ich vermute dass das Bild nicht Truecolor ist:

      
    $termine = imagecreatetruecolor($height, $width);  
    
    

    gruss nimble

    1. moin!

      Ich vermute dass das Bild nicht Truecolor ist:

      welches bild? das originale? doch. außerdem wird ja kein neues erzeugt. aber ich hab das mal gemacht. ich hab das bild (b1) genommen, ein neues erzeugt (b2) und b1 in b2 kopiert. erfolglos. das ergebnis ist das gleiche.

      gruß.
      roger.

      --
      meine freundin sagt, ich wäre neugierig.
      so steht's zumindest in ihrem tagebuch.
      1. moin!

        Ich vermute dass das Bild nicht Truecolor ist:

        welches bild? das originale? doch. außerdem wird ja kein neues erzeugt. aber ich hab das mal gemacht. ich hab das bild (b1) genommen, ein neues erzeugt (b2) und b1 in b2 kopiert. erfolglos. das ergebnis ist das gleiche.

        Das einzige was mir jetzt noch einfällt ist die Qualitätsangabe des Befehls, vieleicht kannst du damit was erreiche:

          
        int imagejpeg ( resource im [, string filename [, int quality]] )  
        
        

        Oder wie schon gesagt wurde mit PNG versuchen, JPG ist für das Bild wohl wirklich nicht die richtige Lösung, obwohl sich PNG mit dem Verlauf auchschwer tun könnte...

        ------------------------------
        lieber ein Pinguin der läuft
        als ein Fenster das hängt
        ------------------------------

        1. moin!

          ich hab jetzt erst mal png genommen:
          http://michelshoehe.de/right_termine.jpg

          ist zwar 10kb groß, aber dafür ohne artefakte...

          gruß.
          roger.

          --
          meine freundin sagt, ich wäre neugierig.
          so steht's zumindest in ihrem tagebuch.
          1. moin!

            http://michelshoehe.de/right_termine.jpg

            sorry,
            http://michelshoehe.de/right_termine.png

            gruß.
            roger.

            --
            meine freundin sagt, ich wäre neugierig.
            so steht's zumindest in ihrem tagebuch.
  2. Hey,

    ich schreibe in eine jpeg-grafik ein wort hinein [...]
    die grafik ist fast einfarbig (mit einigen schatten), deswegen jpeg.

    JPEG ist für Fotos. Wenn's fast einfarbig ist und scharfe Kontraste hat, ist das Format definitiv die falsche Wahl. Kein Wunder, dass du dann sichtlich störende Artefakte hast.

    Gib mir mal das Bild (verlustfrei), ich will damit experimentieren. Wenn's in JPEG mit geringer Kompression nur 2 KB hat und in PNG neun mal so viel, dann machst du was verkehrt.

    1. moin!

      hm, ok:

      orginal:
      http://michelshoehe.de/tmpl_right_termine.jpg

      fertig:
      http://michelshoehe.de/right_termine.jpg

      gruß.
      roger.

      --
      meine freundin sagt, ich wäre neugierig.
      so steht's zumindest in ihrem tagebuch.
    2. moin!

      Gib mir mal das Bild (verlustfrei), ich will damit experimentieren. Wenn's in JPEG mit geringer Kompression nur 2 KB hat und in PNG neun mal so viel, dann machst du was verkehrt.

      hast du schon experimentiert? würde mich über eine antwort freuen...

      gruß.
      roger.

      --
      meine freundin sagt, ich wäre neugierig.
      so steht's zumindest in ihrem tagebuch.
      1. Großartig. Ich hab Freitag eine Antwort geschrieben und bin ins Wochenende aufgebrochen, aber sie ist nicht hier. Der Teufel soll mich holen, wenn ich nochmal auf Vorschau statt Absenden drücke. *grr* Sorry. Also noch mal:

        Die Dateien von dir:
        Vorlage            6223 B  http://michelshoehe.de/tmpl_right_termine.jpg
        fertig als JPEG    2634 B  http://michelshoehe.de/right_termine.jpg
        fertig als PNG    10170 B  http://michelshoehe.de/right_termine.png

        Deine Software hat dich bezüglich der Qualität des JPEG gehörig verkackeiert. Ich muss right_termine.png mit Qualität 25(!) abspeichern, damit ich auf die ähnliche Größe von 2682 B komme. (Weitere Parameter sind: ohne EXIF, nicht-progressiv, Chromasubsampling egal - hat unerheblichen Einfluss auf die Größe.) Selbstverständlich gibt's dann dicke Artefakte, die Qualität ist einfach zu schlecht.

        Analyse von right_termine.png
        IHDR      13    critical    PNG image header: 109x109, 8 bits/pixel, paletted, noninterlaced
        PLTE     768    critical    palette, 256 entries
        IDAT    8192    critical    PNG image data
        IDAT    1129    critical    PNG image data
        IEND       0    critical    end-of-image data

        Die Software macht keine gravierenden Fehler: die Datei enthält keine unnützen Chunks, die Kompression ist stark und Interlacing wird nicht benutzt. Deswegen schaffe ich es auch nur, sie um 5% zu verkleinern, indem ich doppelte Paletteneinträge entferne, die Paletteneintragsreihenfolge verbessere und alle IDAT-Chunks zusammenfasse.

        http://img138.imageshack.us/img138/5876/righttermineoptimiertwb8.png
        IHDR      13    critical    PNG image header: 109x109, 8 bits/pixel, paletted, noninterlaced
        PLTE     759    critical    palette, 256 entries
        IDAT    8827    critical    PNG image data
        IEND       0    critical    end-of-image data

        Was du machen musst, ist die Farbtiefe abzusenken. Das ist zwar auch eine verlustbehaftete Operation, aber die dadurch erzeugten Farbbänder sind für das Auge weitaus unstörender als Klötzer. Die Klötzer nimmt man immer wahr, die Farbbänder meist nur im Vergleich mit dem Original im hoher Farbtiefe. Hier sieht man davon ein wenig in der dunklen Zone oben links.

        http://img138.imageshack.us/img138/5193/righttermine4bitop5.png
        IHDR      13    critical    PNG image header: 109x109, 4 bits/pixel, paletted, noninterlaced
        PLTE      45    critical    palette, 15 entries
        IDAT    3138    critical    PNG image data
        IEND       0    critical    end-of-image data

        Mit nur 4 Bit ist das Bild nur noch halb so groß wie die Vorlage. Sicherlich kann man noch ein bisschen mehr herausholen, aber das Ausgangsmaterial ist JPEG und wirkt leider nachteilig auf die PNG-Optimierung.