PHP ile birine Birden Fazla Görüntü katılmadan

2 Cevap php

Ben bir yazı olarak girdi kutusuna metni oluşturur bu test sayfasını http://thechozenfew.net/projects/write_font.php var. Her harf Nasıl bir php script ile tek bir görüntü içine tüm bu resimleri katılmak istiyorum, farklı bir resim mi?

Bu ne kadar denedim ama görüntüler birbirinin üstünde görünür.

Header ("Content-type: image/gif"); 

$image1Url = "../images/avatar.png";
$image2Url = "../images/key.png";
$image3Url = "../images/safari.png";
$image1 = imageCreateFromPNG($image1Url);
$image2 = imageCreateFromPNG($image2Url);
$image3 = imageCreateFromPNG($image3Url);

$colorTransparent = imagecolorat($image1, 0, 0);
imageColorTransparent ($image1, $colorTransparent);

$colorTransparent = imagecolorat($image2, 0, 0);
imageColorTransparent ($image2, $colorTransparent);

$colorTransparent = imagecolorat($image3, 0, 0);
imageColorTransparent ($image3, $colorTransparent);

imageCopyMerge($image1, $image2, 0, 0, 0, 0, 96, 96, 100);

imageCopyMerge($image1, $image3, 0, 0, 0, 0, 96, 96, 80);

ImagePng ($image1);


ImageDestroy ($image1);
ImageDestroy ($image2);

2 Cevap

Yani burada i kadar sona erdi

<?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);
?>

Canlı Bağlantı http://thechozenfew.net/projects/font/ImageMerge.php?name=it%20works

Script (imagecopymerge için kılavuzuna bakın) birbirlerinin üstüne görüntüleri birleşiyor. Parametreler $dst_x ve $dst_y kontrol birleştirilmiş tuval üzerine kaynak görüntü yerleştirmek için.

Bunları birleştirmek için önceki görüntü ofset belirtmeniz gerekir:

<?
    $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);
?>

Eğer birbirlerinin yanında 3 görüntüleri tutmak için $image1 boyutunu artırmak zorunda olduğunu unutmayın.