2011-11-19 14 views
22

Estoy creando una nueva función en mi sitio que permite a las personas enviar postales a amigos. en esta sección pueden elegir la imagen que desean enviar (ya subieron la imagen a su perfil -> la sección de mis imágenes)Postal personalizada de PHP

estoy usando la función php para crear el texto que está a la derecha, pero ¿cómo puedo agregar otra imagen a esta imagen con el texto?

yo uso imagettftext para crear el texto, imagecreatefromjpeg para abrir la imagen principal (véase más adelante) y imagedestroy cuando im hecho

gracias

estoy usando esta postal: postcard-template.jpg

Respuesta

41

Primero tendrá que recortar la imagen para que quepa en su postal. Sobre la base de su imagen aquí es lo que tiene que hacer:

<?php 

$sourceImage = './postcard-template.jpg'; 
$uploadedImage = '/path/to/image/hong-kong2.jpg'; // let's get hong kong as example 
$mime = ''; 
$font = '/path/to/font/arial.ttf'; 

function CroppedThumbnail($source, $width, $height, &$mime) { 
    $data = getimagesize($source); 
    $sourceWidth = $data[0]; 
    $sourceHeight = $data[1]; 
    $mime = $data['mime']; 
    $image = imagecreatefromjpeg($source); 
    $sourceRatio = $sourceWidth/$sourceHeight; 
    if (($width/$height) > $sourceRatio) { 
    $newHeight = $width/$sourceRatio; 
    $newWidth = $width; 
    } 
    else { 
    $newWidth = $height*$sourceRatio; 
    $newHeight = $height; 
    } 
    $croppedImage = imagecreatetruecolor(round($newWidth), round($newHeight)); 
    imagecopyresampled($croppedImage, $image, 0, 0, 0, 0, $newWidth, $newHeight, $sourceWidth, $sourceHeight); 
    $thumb = imagecreatetruecolor($width, $height); 
    imagecopyresampled($thumb, $croppedImage, 0, 0, (($newWidth/2)-($width/2)), (($newHeight/2)-($height/2)), $width, $height, $width, $height); 
    imagedestroy($croppedImage); 
    imagedestroy($image); 
    return $thumb; 
} 

// Create the cropped image first 
$newThumb = CroppedThumbnail($uploadedImage,240,315, $mime); 
switch($mime) { 
    case 'image/gif': 
    $image = imagecreatefromgif($sourceImage); 
    break; 
    case 'image/jpeg': 
    $image = imagecreatefromjpeg($sourceImage); 
    break; 
    case 'image/png': 
    $image = imagecreatefrompng($sourceImage); 
    break; 
    default: 
    // error or stop script 
    break; 
} 
$message = "this is some text\nsome other text\ntext text"; 

imagettftext($image, 21, 0, 320, 255, imagecolorallocate($image, 0, 0, 0), $font, $message); 
imagecopy($image, $newThumb, 40, 40, 0, 0, 240, 315); 
header('Content-Type: image/jpeg'); 
imagejpeg($image); 
imagedestroy($image); 

Por ejemplo, yo utilizo esta imagen (necesita ser cultivada):

testimage

entonces seria:

final

+6

+1 wow muy bien hecho, lo voy a usar para usar – Tech4Wilco

+4

+1 impresionante muy agradable – ana

0

Uso imagecopymerge para copiar la foto en la tarjeta postal

bool imagecopymerge (resource $dst_im , resource $src_im , int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h , int $pct) 
Cuestiones relacionadas