Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP: Image-Funktionen: CopyResized: Problem

Einklappen

Neue Werbung 2019

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

  • PHP: Image-Funktionen: CopyResized: Problem

    Hallo Community,

    ich habe erfolgreich ein Bild hochgeladen. Aus diesem (grossen) Bild will ich zwei kleinere generieren mit CopyResized. In der Tat generiere ich zwei huebsche Bildchen in der richtigen Groesse, jedoch bleiben sie weiss...

    Ich will das gesamte Originalbild kopieren, und verkleinert (Breite 200 px und 150 px, Hoehen relativ dazu) in zwei kleineren Bildern ausgeben.

    Woran liegt es?

    Hier ist der Code.


    PHP-Code:
     $MyNewPhoto="../v/Prom/".$MyStories."_".$MyPhoto.".jpg";
     
    $MyNewPhoto200="../v/Prom/".$MyStories."_".$MyPhoto."_200.jpg";
     
    $MyNewPhoto150="../v/Prom/".$MyStories."_".$MyPhoto."_150.jpg";

     
    $Size=@getimagesize($MyNewPhoto);
     
    $Width=$Size[0];
     
    $Height=$Size[1];
         
     
    $Faktor200=bcdiv($Size[0],200,0);
     
    $Faktor150=bcdiv($Size[0],150,0);
         
     
    $Bild200=imagecreate(bcdiv($Size[0],$Faktor200,0),bcdiv($Size[1],$Faktor200,0)); 
     
    $Hintergrundfarbe=imagecolorallocate($Bild200,255,255,255); 
     
    imagefill($Bild200,0,0,$Hintergrundfarbe);
     
    imagecopyresized($MyNewPhoto,$Bild200,0,0,0,0,200,bcdiv($Size[1],$Faktor200,0),$Width,$Height);
     
    imagejpeg($Bild200,$MyNewPhoto200,100); 

     
    $Bild150=imagecreate(bcdiv($Size[0],$Faktor150,0),bcdiv($Size[1],$Faktor150,0)); 
     
    $Hintergrundfarbe=imagecolorallocate($Bild150,255,255,255); 
     
    imagefill($Bild150,0,0,$Hintergrundfarbe);
     
    imagecopyresized($MyNewPhoto,$Bild150,0,0,0,0,200,bcdiv($Size[1],$Faktor150,0),$Width,$Height);
     
    imagejpeg($Bild150,$MyNewPhoto150,100); 
    Fuer mich sind diese speziellen Image-Funktionen noch immer sehr komplex und abstrakt. Wer kann helfen?
    sigpic
    Vielen Dank für Eure Zeit, Absicht, Mühe und für Eure Ideen. Grüße,
    Sven

  • #2
    Schauen wir uns doch mal das genau an:
    http://php.net/imagecopyresized

    imagecopyresized ( resource $dst_im, resource $src_im, int
    also in Deutsch:
    imagecopyresized ( resource neues Bild, resource von alten Bild, int .....

    Abgesehen von anderen Schönheitsfehlern.

    Kommentar


    • #3
      Hmm..., danke, CIX88. Aber da steht auch nur das drin, was in meiner SelfPHP.chm drinsteht.

      Ich will jedoch wissen, was ich falsch mache (konkret an meinem Code), da ich selbst beim Vergleichen mit der SelfPHP meinen Fehler nicht erkennen konnte. Manchmal sieht man halt den Wald vor lauter Baeumen nicht...

      Wer kann helfen?
      sigpic
      Vielen Dank für Eure Zeit, Absicht, Mühe und für Eure Ideen. Grüße,
      Sven

      Kommentar


      • #4
        CIX hat alles gesagt, was nötig wäre. Eine Ressource ist kein String. Schau Dir nochmal das Beispiel unter imagecopyresampled () an.
        [COLOR="#F5F5FF"]--[/COLOR]
        [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
        [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
        [COLOR="#F5F5FF"]
        --[/COLOR]

        Kommentar


        • #5
          was in meiner SelfPHP.chm drinsteht
          Werf das Zeug in die Ecke, und schaue dir lieber die Beispiele im PHP-Handbuch auf www.php.net an.

          Dein Script (was auch immer das sein soll) funktioniert hinten und vorne nicht.

          Das Originalbild ist $MyNewPhoto, soweit ich das sehe.
          Dann wird als erstes dieses eingelesen mit
          $altes_bild = ImageCreateFromJPEG($MyNewPhoto);
          (weil es ein Jpeg ist)

          Dann wird eine neue Ressource erstellt:
          $neues_bild = ImageCreateTrueColor( breite, höhe);

          Und dann erfolgt:
          ImageCopyResized( $neues_bild, $altes_bild, ..............);

          $altes_bild und $neues_bild sind die Ressourcen, die du völlig vertauscht hast.

          Aus meiner Abfalltonne zum Vergleichen und um das Prinzip zu verstehen:
          http://www.cix88.de/cix_tonne/tonne_...ize_upload.php

          Kommentar


          • #6
            CIX88, vielen Dank! Du hast mir sehr geholfen. Aber die Loesung des einen Problemes fuehrt mich nun zu einem anderen Problem:

            Das gegenwaertige Resizing verkleinert, indem es senkrechte und vertikale Reihen von Pixel einfach entfernt. Resultat: ein Treppeneffekt bei diagonalen Bildinhalten.

            Gibt es eine Methode, ein Bild weicher zu verkleinern (zu resamplen), aehnlich wie ein Grafikprogramm? Gerne auch innerhalb einer zusaetzlichen Code- / Funktionssammlung.
            sigpic
            Vielen Dank für Eure Zeit, Absicht, Mühe und für Eure Ideen. Grüße,
            Sven

            Kommentar


            • #7
              Gibt es eine Methode, ein Bild weicher zu verkleinern (zu resamplen),
              Die hat nikosch77 bereits genannt
              Ich wusste das dieses Problem noch kommt, aber darauf wollte ich vorerst nicht eingehen, solange dein Script vom logischen Aufbau her nicht stimmt.

              Kommentar

              Lädt...
              X