oke: imagecopyresized <- was ist was?

Hi

imagecopyresized($ziel_file,$quell_file,0,0,0,0,$width,$height,$bild_w,$bild_h)

Ich weiß nicht was für was steht. Auch im Befehlsverzeichnis von PHPmyself werde ich nicht schlauer. Oder ich versteh das gefasel nicht.
http://selfphp.info/funktionsreferenz/image_funktionen/imagecopyresized.php
Kannmir das jemand auf deutsch erklären?

wofür steht:
$ziel_file
,$quell_file
,0,0,0,0
,$width
,$height
,$bild_w
,$bild_h

Das ist doch hoffentlich dafür einem Bild eine neue größe zu geben oder?
Wie speichere ich das ergebnis auf dem webspace?

Danke Eike

  1. Eigentlich will ich nur von einem Bild die Maße aendern und dann speichern ohne einen superlangen QuellText zu haben.
    Mein Problem: Wie aender ich die größe?

    @copy($angepasstes_file,"$file_name")
    so kann ich es abspeichern.

  2. Hi,

    Hi

    imagecopyresized($ziel_file,$quell_file,0,0,0,0,$width,$height,$bild_w,$bild_h)

    Ich weiß nicht was für was steht. Auch im Befehlsverzeichnis von PHPmyself werde ich nicht schlauer. Oder ich versteh das gefasel nicht.
    http://selfphp.info/funktionsreferenz/image_funktionen/imagecopyresized.php

    SelfPHP ist schlecht. Verwende besser die Original-Dokumentation: http://de.php.net/imagecopyresized

    Kannmir das jemand auf deutsch erklären?

    Du lädst ein Bild mit (ich übernehme mal die blödsinnigen Variablennamen (es handelt sich nicht um files, sondern um handler)):
    $quell_file    = imagecreatefromjpeg("pfad_zum_bild.jpg");

    Dann kannst du dessen Größe ermitteln:
    $height = imagesy($quell_file); // Höhe
    $width = imagesx($quell_file);  // Breite

    Du erstellst dir ein zweites, leeres Bild, in einer anderen Größe (wie groß das neue Bild sein soll, muss in $bild_w und $bild_h stehen):
    $ziel_file = imagecreatetruecolor($bild_w,$bild_h);

    Jetzt kannst du mit imagecopyresized das alte Bild, in veränderter Größe, in das neue kopieren:
    imagecopyresized($ziel_file,$quell_file,0,0,0,0,$width,$height,$bild_w,$bild_h);

    Das bedeutet, dass das Bild aus $quell_file in das Bild $ziel_file kopiert werden soll, und zwar jeweils der Ausschnitt beginnend bei 0. D. h. es wird das komplette Bild, und nicht nur ein bestimmter Teil davon kopiert. Dannach kommen die Größenangaben.
    imagecopyresized ist für Fotos aber eher ungeeignet, nimm da besser imagecopyresampled.

    Wenn du jetzt noch
    imageinterlace($ziel_file);
    machst, sieht das Ergebnis beim Laden schöner aus, weil es erst unscharf und dann immer schärfer wird, anstatt sich langsam aufzubauen.

    Letztendlich kannst du das neue Bild mit
    imagejpeg($ziel_file,"neuer_dateiname.jpg",70);
    speichern. Das 70 beeinflusst hierbei die Komprimierung, d. h. umso niedriger die Zahl, umso stärker die Komprimierung (=> schlechtere Bild-Qualität, aber geringere Dateigröße).

    Schöne Grüße
    Julian

    --
    "Real programmers can write assembly code in any language." - Larry Wall
    1. Das bringt mir doch schon gewalltig mehr klarheit!
      Jetzt kann ich mir wenigstens da etwas drunter vorstellen.

      Danke

    2. Ich habe jetzt die Schnipsel alle zusammenkopiert. aber ich weiß nicht wie ich das jetzt ausgeben kann.

      $quell_file    = imagecreatefromjpeg("bilder/bild.jpg");
      $height = imagesy($quell_file);
      $width = imagesx($quell_file);

      //Berechnung der neuen Werte
      $operator=$width/320;
      $bild_h=round($height/$operator);
      $bild_h="$bild_h";
      $bild_w="320";

      $ziel_file = imagecreatetruecolor($bild_w,$bild_h);
      imagecopyresized($ziel_file,$quell_file,0,0,0,0,$width,$height,$bild_w,$bild_h);
      imageinterlace($ziel_file);

      und nu?

      Wie kann ich jetzt die Vorschau ausgeben?

      1. Hi oke!

        $bild_h="$bild_h";

        Was soll denn diese Zeile bringen?

        $ziel_file = imagecreatetruecolor($bild_w,$bild_h);
        imagecopyresized($ziel_file,$quell_file,0,0,0,0,$width,$height,$bild_w,$bild_h);

        Wenn dir die Qualität nicht gefällt, sieht
        imagecopyresampled($ziel_file,$quell_file,0,0,0,0,$width,$height,$bild_w,$bild_h);
        wahrscheinlich besser aus.

        und nu?

        Du hast die Zeile zum Speichern vergessen:
        imagejpeg($ziel_file,"neuer_dateiname.jpg",70);

        Wie kann ich jetzt die Vorschau ausgeben?

        Wenn du - anstatt die Datei zu speichern - nur das Bild ausgeben möchtest, kannst du auch nur
        imagejpeg($ziel_file,"",70);
        schreiben. Dabei musst du aber beachten, dass du das Bild nicht einfach in einer HTML-Seite ausgeben kannst, sondern so tun musst, als wär deine PHP-Datei selbst das Bild. D.h. du kannst das Bild dann mit <img src="php-name-mit-kleinem-bild.php" alt="Mein kleines Bild" /> einbinden.

        Schöne Grüße
        Julian

        --
        "Real programmers can write assembly code in any language." - Larry Wall
        1. imagejpeg($ziel_file,"neuer_dateiname.jpg",70);

          imagejpeg($file,"$file_name",70);

          Dise zeile Funktioniert nicht! ich weiß nicht Warum.
          in $file_name steckt auch die endung jpg.
          Es kommt immer "Warning: imagejpeg(): supplied argument is not a valid Image resource in..."

          Liegt das jetzt am webhoster oder hab ich nen Brett vorm Kopf?

          1. Hallo,

            imagejpeg($ziel_file,"neuer_dateiname.jpg",70);

            imagejpeg($file,"$file_name",70);

            Dise zeile Funktioniert nicht! ich weiß nicht Warum.
            in $file_name steckt auch die endung jpg.
            Es kommt immer "Warning: imagejpeg(): supplied argument is not a valid Image resource in..."

            Liegt das jetzt am webhoster oder hab ich nen Brett vorm Kopf?

            Letzteres wäre möglich *g*. Das hat nichts mit dem Dateipfad zu tun, die Fehlermeldung sagt, dass der erste Parameter, wo du das zu speichernde Bild übergibst, nicht in Ordnung ist. Könnte das daran liegen, dass du $file und nicht $ziel_file geschrieben hast?

            Schöne Grüße
            Julian

            --
            "Real programmers can write assembly code in any language." - Larry Wall