Diğer görüntüleri içeren GD ile resim oluşturma

2 Cevap php

Farklı diğer resimlerin oluşan GD PHP ile bir resim oluşturmak istiyorum. Örneğin ben 6 resim (veya daha fazla) var ve ben bu farklı resim içeren bir resim oluşturmak istiyorum.

Zorluk benim son resim sabit bir genişlik ve yükseklik (304x179) olması gerekir, bu yüzden farklı resimler çok büyük eğer onlar kesmek gerekir. Bu IconFinder bir örnek:

bu resim 6 images var

Bu resim 6 görüntülerinden oluşan, ancak 3. kuş (yeşil) kesildikten ve 4, 5 ve 6 alt kesilmiş olmasıdır. Bu ne istiyorum, sen bana PHP bu kod yazmak için bazı yardım verebilir?

Teşekkürler

2 Cevap

Birincil görüntü oluşturun ve onu düşünün "tuval."

Oradan, imagecopy() tuval görüntü içine küçük görüntüleri kopyalamak için kullanabilirsiniz.

Örneğin bu bakınız:

<?php
header('Content-Type: image/jpg');
$canvas = imagecreatetruecolor(304, 179);
$icon1 = imagecreatefromjpeg('icon.jpg');
$icon2 = imagecreatefromjpeg('icon2.jpg');
// ... add more source images as needed
imagecopy($canvas, $icon1, 275, 102, 0, 0, 100, 100);
imagecopy($canvas, $icon2, 0, 120, 0, 0, 100, 100);
// ... copy additional source images to the canvas as needed
imagejpeg($canvas);
?>

Benim örnekte, icon.jpg Ben onun sol üst köşesinde sağ tarafı keser tuval, 102, 275 yer olduğu gibi tuval yerleştirerek am 100x100 görüntü.

Edit

Ben ne yaptığınızı daha benzer olması için kod ayarlandı.

İşte benim komut birinden spinet değiştirmek test bir hiçbiri, bu yararlı olabilir umuyoruz:

    header('Content-type: image/png');

    $image = array() //Populate this array with the image paths

    //Create the Letters Image Objects
      foreach($image as $a){
        $image['obj'][] = imageCreateFromPNG($a);
      }unset($a);

      $canvasW = 300;
      $canvasH = 300;

    //Create Canvas
      $photoImage = imagecreatetruecolor($canvasW,$canvasH);
      imagesavealpha($photoImage, true);
      $trans_color = imagecolorallocatealpha($photoImage, 0, 0, 0, 127);
      imagefill($photoImage, 0, 0, $trans_color);

    //Merge Images
      $Offset_y = 0;
      $images_by_row = 3;
      $images_rows_height = 100; // height of each image row
      $counter = 0;

      foreach($image['obj'] as $a){
        $counter++;

        $width = ceil(imagesx($a));
        $height = ceil(imagesy($a));

        if(!isset($offset)){ $offset = 1; }

        imageComposeAlpha($photoImage, $a, $offset, $Offset_y,$width,$height);

        if($offset >= 1){
          $offset = $offset + $width;
        }

        //Check if new row next time
        if($counter >= $images_by_row){
          if($images_by_row%$counter){
            $offset_y += $images_rows_height;
          }
        }

      }unset($a);

      imagepng($photoImage);