gd-png: fatal libpng error: Invalid number of colors in palettel

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • gd-png: fatal libpng error: Invalid number of colors in palettel

    Hallo,

    beim Erstellen eines Bildes erhalte ich folgende Fehlermeldung:
    Fatal error: imagepng(): gd-png: fatal libpng error: Invalid number of colors in palette in /xxx/mathe/transformation.php on line 235
    Der entsprechende Code-Schnipsel dazu:
    (wichtig: Die Bilder sind alle quadratisch!)
    PHP-Code:
                    // Um mit dem Ursprungsbild arbeiten zu können, braucht man eine PHP-"Kopie"
                    
    $altes_bild ImageCreateFromPng("bilder/" $ausgangs_datei);
                    
    // Die Dimensionen des alten Bildes werden ausgelesen...
                    
    $groesse  ImageSX($altes_bild);
                    
    // Das alte temporäre Bild kann nun gelöscht werden.
                    
    @unLink("bilder/tmp." $bild "." $id ".png");
                    
    // Ein temporäres Bild erzeugen, in das die neuen Bildpunkt eingetragen werden
                    
    $neues_bild ImageCreate($groesse$groesse);
                    
    // Um die gleichen Farben auch im neuen Bild verfügbar zu haben, muss
                    // die entsprechende Farbpalette vom einen Bild ins andere kopiert werden
                    
    imagePaletteCopy($neues_bild$altes_bild);
                    
                    
    // Für jeden einzelnen Bildpunkt wird jetzt die Transformation ausgeführt
                    
    for ( $x=1$x<=$groesse$x++ )
                    {
                        for ( 
    $y=1$y<=$groesse$y++ )
                        {
                            
    // Farbwert der Koordinaten $x und $y zurückgeben
                            
    $farbe imageColorAt($altes_bild$x$y);
                            
                            
    // Jetzt muss noch unterschieden werden, ob eine anfängliche
                            // Transformation rückgängig gemacht werden oder wirklich
                            // transformiert werden soll.
                            
    if ( $_REQUEST["mode"] == "minus" )
                            {
                                
    // Arnold-Transformation einmal rückgängig
                                
    $neu_x fmod((2*$x $y), $groesse);
                                
    $neu_y fmod(($y $x),   $groesse);
                            }
                            else
                            {
                                
    // Arnold-Transformation einmal ausführen
                                
    $neu_x = ($x $y)   % $groesse;
                                
    $neu_y = ($x 2*$y) % $groesse;
                            }

                            
    // Mit der oben bestimmten Farbe des Punktes wird nun bei diesen neuen
                            // Koordinaten ein Bildpunkt gezeichnet
                            
    imageSetPixel($neues_bild$neu_x$neu_y$farbe);
                        }
                    }

                  
    // Das Bild wird gespeichert.
                    
    imagePng($neues_bild"bilder/tmp." $bild "." $id ".png"100);  // LINIE 235
                    // Bild zerstören, mit dem gearbeitet wurde
                    
    imageDestroy($neues_bild); 
    Wundert euch nicht über die dumpen Kommentare - wurde dazu verdonnert, soviel zu kommentieren...

    Im Forum wurde gesucht, ebenso in Google. Google lieferte zwar einige Ergebnisse, das Problem wurde aber nie richtig gelöst...

    Bin für jede Hilfe dankbar!

    MfG, rob

  • #2
    entweder versuchst du es mit imagecreatetruecolor() oder du liest zuerst
    die farbpalette des source-bildes aus und weist diese der palette des
    zielbildes zu, sofern die identisch sein soll/muss.
    Kissolino.com

    Kommentar


    • #3
      Danke für die Antwort.
      Ja, die Farbpalette ist absolut identisch, da jeder Pixel des alten Bildes einfach unter veränderten Koordinaten auf das neue Bild übertragen wird.

      Kommentar


      • #4
        oder du liest zuerst
        die farbpalette des source-bildes aus und weist diese der palette des
        zielbildes zu, sofern die identisch sein soll/muss.
        mache ich das denn nicht mit imagePaletteCopy() ?

        Kommentar


        • #5
          laut manual: ja .... check mal mit imagecolorsforindex() ob das wirklich so ist ... uU steckt der fehler ja woanders.
          Kissolino.com

          Kommentar


          • #6
            naja, soll mir egal sein
            Mit Deinem Tipp, dass ich imageCreateTrueColor() verwenden soll, klappt's (liegt wohl daran, dass imageCreateFromPng() auch ein TrueColor-Bild zurückliefert).

            Nur noch eine kurze andere Frage:
            Ich benutze PHP 4.3.4 und da sollte doch die GDLib > 2.0 bereits installiert sein, oder? Oder muss ich die noch irgendwo aktivieren? (wenn ich in php.ini dieses Modul aktiviere, heisst es, sie kann nicht geladen werden ...)

            edit:
            ... hat sich erledigt, danke für Deine Hilfe!
            Zuletzt geändert von roobin; 14.03.2004, 16:08.

            Kommentar


            • #7
              wenn du keine gd2 hast, muss sie afaik einkompiliert werden (mal im forum installation suchen) ... was sagt denn die phpinfo() ?
              Kissolino.com

              Kommentar

              Lädt...
              X