Ver Mensaje Individual
  #5 (permalink)  
Antiguo 05/02/2014, 11:53
Avatar de alealvaro
alealvaro
 
Fecha de Ingreso: junio-2004
Ubicación: BA - Argentina
Mensajes: 210
Antigüedad: 22 años, 4 meses
Puntos: 12
Respuesta: código meme generator

Cita:
Iniciado por Triby Ver Mensaje
Entonces supongo que ya tienes algún código que has probado y que tal vez solo falta afinarlo para obtener el resultado deseado, qué te parece si lo muestras, nos comentas lo que falta (o falla) y entonces sí podríamos tratar de ayudar.
Tengo algunos códigos con los que estoy ensayando principalmente con Imagick, por ejemplo:

Genera la imágen pero el texto sobrepasa el ancho sin realizar ningún salto de línea.
Código PHP:
$text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. In tincidunt velit at justo varius, tincidunt varius magna sollicitudin.";

$image = new Imagick('http://placehold.it/500x500');
$image->cropThumbnailImage(500, 500);

$draw = new ImagickDraw;
$draw->setFontSize(40);
$draw->setFont('OpenSans-Regular.ttf');
$draw->setGravity(Imagick::GRAVITY_CENTER);

$image->annotateImage($draw, 10, 10, 0, $text);

header('Content-Type: image/jpg');
echo 
$image; 
Este está cerca de lo que quiero, adapta el tamaño de la fuente, y agregando a mano algunos saltos "\n" queda en un tamaño aceptable, pero no logro el texto quede centrado, sino que lo muestra alineado a la izquierda.
Código PHP:
<?php
$text 
= "Lorem ipsum dolor sit amet\n, consectetur adipis\ncing elit. In tincidunt \nvelit at justo varius, \ntincidunt varius magna \nsollicitudin.";

$objImage = new Imagick('http://placehold.it/500x500');

$imgSize   = $objImage->getImageGeometry();
$imgWidth  = $imgSize['width'];
$imgHeight = $imgSize['height'];

$objText = new ImagickDraw();
$objText->setFillColor( new ImagickPixel('black') );
$objText->setFillAlpha( 0.2 );
$objText->setGravity( Imagick::GRAVITY_NORTHWEST );

$textProperties = array( 'textWidth' => 0 );
$textDesiredWidth = intval( $imgWidth * 0.9 );
$fontSize = 0;

while (
$textProperties['textWidth'] <= $textDesiredWidth) {
    
$objText->setFontSize( $fontSize );
    
$textProperties = $objImage->queryFontMetrics( $objText, $text );
    
$fontSize++;
}

$watermarkPosX = intval( ($imgWidth - $textProperties['textWidth']) / 2 );
$watermarkPosY = floor( ($imgHeight - $textProperties['textHeight']) / 2 );
$objImage->annotateImage( $objText, $watermarkPosX, $watermarkPosY, 0, $text );

header( 'Content-Type: image/jpeg' );
echo 
$objImage;
Este desde línea de comando tengo un resultado cercano, como el código anterior, pero tampoco logro el centrado del texto, y si no fuerzo los saltos de línea con "\n", para textos largos se pierda a partir de la 3ra línea.
Código PHP:
<?php

$text 
= "Lorem ipsum dolor sit amet, consectetur adipiscing elit. In tincidunt velit at justo varius, tincidunt varius magna sollicitudin.";

exec("convert sky.jpg -size 460x -background transparent -fill black -pointsize 40 caption:'{$text}' -gravity center -composite result.jpg");

echo 
"<img src='result.jpg' width='500' height='500'>";
Estos son los intentos más cercanos, pero aún no consigo hacer lo que quiero. Agradecería cualquier ayuda!!

Saludos y muchas gracias!
__________________
Always learning a little more...
Videos y frases para dedicar
Quotes and Phrases for You