Ankündigung

Einklappen
Keine Ankündigung bisher.

Farben versaut

Einklappen

Neue Werbung 2019

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

  • Farben versaut

    Liebe Pros,
    ich weiß nicht ob mein Problem in Bereich Pro gehört, aber so komm ich mir wichtiger vor, sollte ich belästigen mit Kinderkram bitte ich um Entschuldigung.

    Habe als Teil eines Uploadskriptes eine Bildverkleinerung vorgesehen, die ich mir hauptsächlich zusammenkopiert habe:

    PHP-Code:
     // Orginalbild 
      
    $bild="$neuername"
      
    // Bilddaten feststellen 
      
    $size=getimagesize("$PicPathIn"."$bild"); 
      
    $breite=$size[0]; 
      
    $hoehe=$size[1]; 
      
    $neueBreite=100
      
    $neueHoehe=intval($hoehe*$neueBreite/$breite); 

      if(
    $size[2]==1) { 
      
    // GIF 
      
    $altesBild=ImageCreateFromGIF("$PicPathIn"."$bild"); 
      
    $neuesBild=ImageCreate($neueBreite,$neueHoehe); 
      
    ImageCopyResized($neuesBild,$altesBild,0,0,0,0,$neueBreite,
    $neueHoehe,$breite,$hoehe); 
      
    ImageGIF($neuesBild,"$PicPathOut"."$bild"); 
      } 

      if(
    $size[2]==2) { 
      
    // JPG 
      
    $altesBild=ImageCreateFromJPEG("$PicPathIn"."$bild"); 
      
    $neuesBild=ImageCreate($neueBreite,$neueHoehe); 
      
    ImageCopyResized($neuesBild,$altesBild,0,0,0,0,$neueBreite,
    $neueHoehe,$breite,$hoehe); 
      
    ImageJPEG($neuesBild,"$PicPathOut"."$bild"); 
      } 

      if(
    $size[2]==3) { 
      
    // PNG 
      
    $altesBild=ImageCreateFromPNG("$PicPathIn"."$bild"); 
      
    $neuesBild=ImageCreate($neueBreite,$neueHoehe); 
      
    ImageCopyResized($neuesBild,$altesBild,0,0,0,0,$neueBreite,
    $neueHoehe,$breite,$hoehe); 
      
    ImagePNG($neuesBild,"$PicPathOut"."$bild"); 
      } 

      
    #unlink("$PicPathIn$bild"); 
      
    $Tumbnail=$PicPathOut.$bild
    Soweit so gut, das Ding funkt im Sinne dass es verkleinert, aber er vernichtet die Farben des Bildes aufs schlimmste:



    Dieser lächelnde Kerl sollte auf einem gewöhnliches MacBook Farbfoto
    sein und nicht von Roy Lichtenstein gemalt.

    Wie überrede ich das Skript seine Kunstkarriere abzulegen und einfach nur zu verkleinern?

    Grüße,
    y

  • #2
    Hi,

    also so sehe ich jetzt keinen Fehler bei dir, aber lass uns versuchen den Fehler einzugrenzen.

    1. Macht er das mit allen bildformaten? Probier mal alle 3 aus.

    2. Wie sieht dein Ergebnis aus wenn du das ImageCopyResized weglässt (auskommentierst) und dann bei ImagePNG (bzw. den anderen) für $neuesBild $altesBild verwendest?

    Gruß
    Cy

    Kommentar


    • #3
      Sieht für mich so aus, als würde er es ganz direkt ins GIF umwandeln - und Gif hat nunmal ne begrenzte Colortable

      Kommentar


      • #4
        Ich glaube hier liegt der Hase begraben, du verwendest die Bildgröße für den Switch Case oder bin ich noch nciht ganz wach?

        PHP-Code:
        $size=getimagesize("$PicPathIn"."$bild"); 
        // einige Stellen weiter...
        if($size[2]==1

        Kommentar


        • #5
          du bist noch nichjt ganz wach christian, guckst du manual

          Kommentar


          • #6
            *blätter*

            Was für Werte bekommt man denn da? Also Imagetyp ist klar, aber wie sehen die aus?

            Kommentar


            • #7
              Hey Christian,

              ich sag doch guckst du manual:

              Im Array-Index 0 steht die Breite. Index 1 enthält die Höhe, 2 ein Flag je nach Grafik-Typ (1 = GIF, 2 = JPG, 3 = PNG, SWF = 4)
              Also das stimmt bei ihm schon.

              Kommentar


              • #8
                Okay gewonnen ... :P

                Kommentar


                • #9
                  @fyp imagecreatetruecolor statt imagecreate benutzen...

                  Kommentar


                  • #10
                    Rofl er wird wohl recht haben, denn selbst die Manual sagt folgendes:

                    Zitat von http://de3.php.net/manual/de/function.imagecreate.php
                    ImageCreate() gibt den Zeiger auf ein neues Bild zurück. Dieser Zeiger stellt ein leeres Bild mit der Größe x_size und y_size dar.
                    Es wird empfohlen, die Funktion imagecreatetruecolor() zu verwenden.

                    Kommentar


                    • #11
                      Das Forum hier ist cool. Da werden Antworten auf Probleme von dritten bestätigt...

                      Und ich habe gedacht das hier wäre das php-profi Forum.

                      Kommentar


                      • #12
                        Zitat von HPR1974 Beitrag anzeigen
                        Und ich habe gedacht das hier wäre das php-profi Forum.
                        Und was genau macht es so zu einem nicht-php-profi Forum??

                        Kommentar


                        • #13
                          Na die Antworten zur Ursprungsfrage.

                          Kommentar


                          • #14
                            Zitat von HPR1974 Beitrag anzeigen
                            Na die Antworten zur Ursprungsfrage.
                            Threads werden nicht anhand einer Frage definiert sondern durch ein Thema. Nach deinem Verständnis (ein Frage->Antwort Board) würde es nie gelingen gemeinsam eine Lösung zu finden und auch mal über den Horizont zu blicken.

                            Kommentar


                            • #15
                              sorry, aber ich habe hier eine Antwort gesehen, die den Ansatz einer Lösungsfindung für das Ursprungsproblem beinhaltete. Das war die erste. Der Rest war irgendwas nach dem Motto "ich muss hier posten"

                              Kommentar

                              Lädt...
                              X