Joining Multiple Images into one with a PHP script

前端 未结 2 794
自闭症患者
自闭症患者 2021-01-16 23:13

I have this test page http://thechozenfew.net/projects/write_font.php that generates the text in the input box as a font. Each letter is a different picture, How would i joi

相关标签:
2条回答
  • 2021-01-16 23:46

    Your script is merging the images on top of each other (see the manual for imagecopymerge). The parameters $dst_x and $dst_y control where to place the source image on the merged canvas.

    You need to specify the offset from the previous image to merge them:

    <?
        $offset2x = imagesx($image1);
        imageCopyMerge($image1, $image2, $offset2x, 0, 0, 0, 96, 96, 100);
    
        $offset3x = $offset2x + imagesx($image2);
        imageCopyMerge($image1, $image3, $offset3x, 0, 0, 0, 96, 96, 80);
    ?>
    

    Note that you will have to increase the size of $image1 to hold all 3 images next to each other.

    0 讨论(0)
  • 2021-01-16 23:55

    So here what i ended up with

    <?php
    header('Content-type: image/png');
    
    function imageComposeAlpha( &$src, &$ovr, $ovr_x, $ovr_y, $ovr_w = false, $ovr_h = false, $opc = 127){
     imagecopy($src, $ovr, $ovr_x, $ovr_y, 0, 0, imagesx($ovr), imagesy($ovr) );
    }
    
    ////////////////////////---////////-----------------------------------
    
    $url = "../../images/socom_font/normal/Socom";
    
    //Covert the String iinto an Array
     $letter = str_split(strtoupper ($_GET['name']));
    //Populate Letters Image Path
     foreach($letter as $a){
       //exeptions
      if($a == "?"){ $a = "Question"; }
      if($a == "/"){ $a = "Slash"; }
      if($a == "%"){ $a = "Percent"; }
      if($a == " "){ $a = "Space"; }
      $image[] = $url.$a.".png";
     }unset($a); 
    //Create the Letters Image Objects
     foreach($image as $a){
      $image['obj'][] = imageCreateFromPNG($a);
     }unset($a);
    //calculate Canvas Width
     foreach($image['obj'] as $a){
      if(!isset($canvasW)){ $canvasW = 0; }
      $canvasW = imagesx($a) + $canvasW;
     }unset($a);
    //Create Canvas
     $photoImage = imagecreatetruecolor($canvasW,100);
     imagesavealpha($photoImage, true);
     $trans_color = imagecolorallocatealpha($photoImage, 0, 0, 0, 127);
     imagefill($photoImage, 0, 0, $trans_color);
    
    //Merge Images
     foreach($image['obj'] as $a){
      $width = ceil(imagesx($a));
      if(!isset($offset)){ $offset = 1; }
    
      imageComposeAlpha($photoImage, $a, $offset, 0,$width,100);
    
      if($offset >= 1){
       $offset = $offset + $width;
      }
     }unset($a);
    // Save it
     //Imagepng($photoImage, 'done.png'); 
    // Output to browser 
     Imagepng($photoImage); 
    
    //Destroy all Image Objects
     foreach($image['obj'] as $a){
      ImageDestroy($a);
     }
     ImageDestroy($photoImage);
    ?>
    

    The Live Link http://thechozenfew.net/projects/font/ImageMerge.php?name=it%20works

    0 讨论(0)
提交回复
热议问题