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: 20 años, 5 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(500500);

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

$image->annotateImage($draw10100$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->setFillAlpha0.2 );
$objText->setGravityImagick::GRAVITY_NORTHWEST );

$textProperties = array( 'textWidth' => );
$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']) / );
$watermarkPosY floor( ($imgHeight $textProperties['textHeight']) / );
$objImage->annotateImage$objText$watermarkPosX$watermarkPosY0$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