Text in Bild einbauen

rernanded

Erfahrenes Mitglied
Hallo
habe Code zum Verkleinern von Bildern. Nun will ich zusätzlich Texte (text1 und text2) ins Bild einbauen.
Dabei gibts aber "meine Wissenslücken". ;-)
MONI
PHP:
                              <form action="" method="post" enctype="multipart/form-data">

<textarea name="text1"></textarea><br />
<textarea name="text2"></textarea><br />

                                 <div class="form-group col-md-3">
                                    <label class="required">Width</label>
                                    <input type="number" name="new_width" required />
                                 </div>
                                 <div class="form-group col-md-3">
                                    <label class="required">Height</label>
                                    <input type="number" name="new_height" required />
                                 </div>
                                 <div class="form-group col-md-6">
                                    <label class="required">Choose Image</label>
                                    <input type="file" name="upload_image">
                                 </div>
                                 <input type="submit" name="form_submit" value="submit">
                              </form>
                              <?php
                                 function resizeImage($resourceType,$image_width,$image_height,$resizeWidth,$resizeHeight) {
                                     // $resizeWidth = 100;
                                     // $resizeHeight = 100;
                                     $imageLayer = imagecreatetruecolor($resizeWidth,$resizeHeight);
                                     imagecopyresampled($imageLayer,$resourceType,0,0,0,0,$resizeWidth,$resizeHeight, $image_width,$image_height);
                                     return $imageLayer;
                                 }
                                
                                 if(isset($_POST["form_submit"])) {
                                     $imageProcess = 0;
                                     if(is_array($_FILES)) {
                                         $new_width = $_POST['new_width'];
                                         $new_height = $_POST['new_height'];
                                         $fileName = $_FILES['upload_image']['tmp_name'];
                                         $sourceProperties = getimagesize($fileName);
                                         $resizeFileName = time();
                                         $uploadPath = "./images/";
                                         $fileExt = pathinfo($_FILES['upload_image']['name'], PATHINFO_EXTENSION);
                                         $uploadImageType = $sourceProperties[2];
                                         $sourceImageWidth = $sourceProperties[0];
                                         $sourceImageHeight = $sourceProperties[1];
                                         switch ($uploadImageType) {
                                             case IMAGETYPE_JPEG:
                                                 $resourceType = imagecreatefromjpeg($fileName);
                                                 $imageLayer = resizeImage($resourceType,$sourceImageWidth,$sourceImageHeight,$new_width,$new_height);
                                                 imagejpeg($imageLayer,$uploadPath."thump_".$resizeFileName.'.'. $fileExt);
                                                 break;
                                
                                             case IMAGETYPE_GIF:
                                                 $resourceType = imagecreatefromgif($fileName);
                                                 $imageLayer = resizeImage($resourceType,$sourceImageWidth,$sourceImageHeight,$new_width,$new_height);
                                                 imagegif($imageLayer,$uploadPath."thump_".$resizeFileName.'.'. $fileExt);
                                                 break;
                                
                                             case IMAGETYPE_PNG:
                                                 $resourceType = imagecreatefrompng($fileName);
                                                 $imageLayer = resizeImage($resourceType,$sourceImageWidth,$sourceImageHeight,$new_width,$new_height);
                                                 imagepng($imageLayer,$uploadPath."thump_".$resizeFileName.'.'. $fileExt);
                                                 break;
                                
                                             case IMAGETYPE_JPG:
                                                 $resourceType = imagecreatefrompng($fileName);
                                                 $imageLayer = resizeImage($resourceType,$sourceImageWidth,$sourceImageHeight,$new_width,$new_height);
                                                 imagepng($imageLayer,$uploadPath."thump_".$resizeFileName.'.'. $fileExt);
                                                 break;
                                
                                             default:
                                                 $imageProcess = 0;
                                                 break;
                                         }
                                         move_uploaded_file($fileName, $uploadPath. $resizeFileName. ".". $fileExt);
                                         $imageProcess = 1;
                                     }
                                
                                     if($imageProcess == 1){
                                     ?>
                              <div>Image Resize Successfully</div>
                              <hr>
                              <div>                               
                                    <img src="<?php echo $uploadPath."thump_".$resizeFileName.'.'. $fileExt; ?>" width="<?php echo $new_width; ?>" height="<?php echo $new_height; ?>" >
                                    <h4><b>Resized Image</b></h4>
                                    <a href="<?php echo $uploadPath."thump_".$resizeFileName.'.'. $fileExt; ?>" download>
                    <h4><b>DOWNLOAD</b></h4></a>
                              </div>
                              <div>
                                    <img src="<?php echo $uploadPath.$resizeFileName.'.'. $fileExt; ?>" >
                                    <h4><b>Original Image</b></h4>
                              </div>                       
                              <?php
                                 }else{
                              ?>
                              <strong> Note !</strong> <span>Invalid Image </span>
                              <?php
                                 }
                                 $imageProcess = 0;
                                 }
                              ?>
 
Hi sempervivum,
das habe ich natürlich mir schon angeschaut, doch mir ist nicht klar was ich wie und wo in meinen Code einbauen muß.





MONI
 
Hast du dir mal die Beispiele auf der verlinkten Seite angesehen? Eigentlich solltest du damit etwas anfangen können.
 
Hallo renande,
vielleicht bin ich ja am Handy blind.
Dein Script funktioniert aber der Text nicht.
Ist das so richtig?
Ich kann nicht sehen wie du den Text sendest!
 
Zuletzt bearbeitet:
Ich habe @rernanded so verstanden, dass sie nicht wusste, wie sie den Code erweitern muss und es deshalb nicht getan hat.

@rernanded Um es dir zu zeigen habe ich den Code um das Einfügen der Text erweitert. Beachte meine Kommentare.
Damit die Bilder richtig angezeigt werden, musste ich die zusammen gebauten Dateinamen vereinheitlichen.
Und ich war so frei und habe das "_thump" durch das gebräuchliche "_thumb" ersetzt.
An einigen Stellen musst Du den Code noch ein wenig erweitern.

Code:
    <form action="" method="post" enctype="multipart/form-data">

        <!-- Im Formular habe ich die Texte und Abmessungen initialisiert,
        um leichter testen zu können -->

        <textarea name="text1">Text 1</textarea><br />
        <textarea name="text2">Text 2</textarea><br />

        <div class="form-group col-md-3">
            <label class="required">Width</label>
            <input type="number" name="new_width" required value="400" />
        </div>
        <div class="form-group col-md-3">
            <label class="required">Height</label>
            <input type="number" name="new_height" required value="400" />
        </div>
        <div class="form-group col-md-6">
            <label class="required">Choose Image</label>
            <input type="file" name="upload_image">
        </div>
        <input type="submit" name="form_submit" value="submit">
    </form>
    <?php
    function resizeImage(
        $resourceType,
        $image_width,
        $image_height,
        $resizeWidth,
        $resizeHeight,
        // Beide Texte müssen als Parameter übergeben werden:
        $text1,
        $text2
    ) {
        // $resizeWidth = 100;
        // $resizeHeight = 100;
        $imageLayer = imagecreatetruecolor($resizeWidth, $resizeHeight);
        imagecopyresampled($imageLayer, $resourceType, 0, 0, 0, 0, $resizeWidth, $resizeHeight, $image_width, $image_height);
        // Wir müssen zunächst die Farbe der Texte fest legen,
        // hier habe ich weiß gewählt:
        $textColor = imagecolorallocate($imageLayer, 255, 255, 255);
        // Jetzt tragen wir den ersten Text ein:
        imagestring(
            $imageLayer,
            4,
            20, // x-Position bzw. Abstand vom linken Rand
            round($resizeHeight / 3), // y-Position, ich habe 1/3 der Höhe gewählt
            $text1,
            $textColor
        );
        // Ergänze den Code für den zweiten Text!
        return $imageLayer;
    }

    if (isset($_POST["form_submit"])) {
        $imageProcess = 0;
        if (is_array($_FILES)) {
            $new_width = $_POST['new_width'];
            $new_height = $_POST['new_height'];
            // Beide Texte aus POST-Parametern bereit stellen:
            $text1 = $_POST['text1'];
            $text2 = $_POST['text2'];
            $fileName = $_FILES['upload_image']['tmp_name'];
            $sourceProperties = getimagesize($fileName);
            $resizeFileName = time();
            $uploadPath = "./uploads/";
            $fileExt = pathinfo($_FILES['upload_image']['name'], PATHINFO_EXTENSION);
            $uploadImageType = $sourceProperties[2];
            $sourceImageWidth = $sourceProperties[0];
            $sourceImageHeight = $sourceProperties[1];
            switch ($uploadImageType) {
                case IMAGETYPE_JPEG:
                    $resourceType = imagecreatefromjpeg($fileName);
                    $imageLayer = resizeImage(
                        $resourceType,
                        $sourceImageWidth,
                        $sourceImageHeight,
                        $new_width,
                        $new_height,
                        // Die beiden Texte müssen an die Funktion übergeben werden:
                        $text1,
                        $text2
                    );
                    imagejpeg($imageLayer, $uploadPath . "thumb_" . $resizeFileName . '.' . $fileExt);
                    break;

                    // Ergänze die Übergabe der Texte für die weiteren Aufrufe von resizeImage!
                case IMAGETYPE_GIF:
                    $resourceType = imagecreatefromgif($fileName);
                    $imageLayer = resizeImage($resourceType, $sourceImageWidth, $sourceImageHeight, $new_width, $new_height);
                    imagegif($imageLayer, $uploadPath . "thumb_" . $resizeFileName . '.' . $fileExt);
                    break;

                case IMAGETYPE_PNG:
                    $resourceType = imagecreatefrompng($fileName);
                    $imageLayer = resizeImage($resourceType, $sourceImageWidth, $sourceImageHeight, $new_width, $new_height);
                    imagepng($imageLayer, $uploadPath . "thumb_" . $resizeFileName . '.' . $fileExt);
                    break;

                    // JPG und dann imagecreatefrompng? Ich kommentiere das mal aus:
                    // case IMAGETYPE_JPG:
                    //     $resourceType = imagecreatefrompng($fileName);
                    //     $imageLayer = resizeImage($resourceType, $sourceImageWidth, $sourceImageHeight, $new_width, $new_height);
                    //     imagepng($imageLayer, $uploadPath . "thumb_" . $resizeFileName . '.' . $fileExt);
                    //     break;

                default:
                    $imageProcess = 0;
                    break;
            }
            move_uploaded_file($fileName, $uploadPath . $resizeFileName . "." . $fileExt);
            $imageProcess = 1;
        }

        if ($imageProcess == 1) {
    ?>
            <div>Image Resize Successfully</div>
            <hr>
            <div>
                <img src="<?php echo $uploadPath . "thumb_" . $resizeFileName . '.' . $fileExt; ?>" width="
        <?php echo $new_width; ?>" height="
        <?php echo $new_height; ?>">
                <h4><b>Resized Image</b></h4>
                <a href="<?php echo $uploadPath . "thumb_" . $resizeFileName . '.' . $fileExt; ?>" download>
                    <h4><b>DOWNLOAD</b></h4>
                </a>
            </div>
            <div>
                <img src="<?php echo $uploadPath . $resizeFileName . '.' . $fileExt; ?>">
                <h4><b>Original Image</b></h4>
            </div>
        <?php
        } else {
        ?>
            <strong> Note !</strong> <span>Invalid Image </span>
    <?php
        }
        $imageProcess = 0;
    }
    ?>
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück