Programacion

Reparando posts en wordpress

Hoy revisando cosas del blog, me he dado cuenta que las antiguas imágenes que tenia importadas desde instagram, estaban mal ya que instagram ha tenido que cambiar algo de su plataforma y las urls de las imagenes con el dominio distilleryimage2.s3.amazonaws.com no funcionan correctamente.

Entonces como todos los posts son ‘similares’ la manera mas fácil de arreglarlo, era editar todos los artículos a la vez mediante scripting. Ademas aprovecho para modificar todos los artículos de instagram y les agrego el post_format correcto.

Haciendo alguna pequeña modificación os sirve para casos similares.

Suerte!

Generar imagenes al vuelo

Como todos sabeis, yo no soy diseñador, pero si me gusta trastear con el diseño a la hora de hacer paginas web, y muchas veces, necesito una imagen de cierto tamaño para color en la cabecera o para hacer un slider, para asi ver como queda en conjunto todo eso. Pero no siempre tengo un diseñador a mano, ni me apetece usar ningun programa para hacer las imagenes.

Asi que he decidido hacerme un ‘generador de imagenes’ para poder agregar a mi web y asi dejar el espacio para la foto final o ver como quedaria todo en conjunto.

El codigo seria:

<?
//primero definimos las distintas variables

//Directorio para generar una pequeña cache, asi no tenemos que generar siempre la imagen
$cacheDir = '/home/errante/el-maldito.com/www/i/cache/';
//Tamaños por defecto
define('ANCHO', 150);
define('ALTO',  150);
//Datos de la letra
$fuente = "arial.ttf";
$size   = 20; //Tamaño de la fuente

//calculamos el archivo que generaremos
$hash = md5($_SERVER['QUERY_STRING']);
$archivoCache = $cacheDir.$hash.'.png';

//Si ya tenemos el archivo lo servimos
if(file_exists($archivoCache)) {
        header ('Content-Type: image/png');
        readfile($archivoCache);
        die;
}

//Si llega aqui es que no tenemos el archivo generado, asi que empieza la fiesta =)
//Obtenemos todos los datos del _GET
// w => Ancho, h => Alto, t => Texto que queremos, c => Color de la imagen
$ancho = isset($_GET['w'])?$_GET['w']:ANCHO;
$alto  = isset($_GET['h'])?$_GET['h']:ALTO;
$texto = isset($_GET['t'])?$_GET['t']:'';
$color = isset($_GET['c'])?$_GET['c']:'';

//Función para obtener el valor RGB numero de uno Hexadecimal
function hex2rgb($hex) {
        $rgb[0]=hexdec(substr($hex,0,2));
        $rgb[1]=hexdec(substr($hex,2,2));
        $rgb[2]=hexdec(substr($hex,4,2));
        return($rgb);
}

//Sacamo el codigo rgb del color
$rgb    = hex2rgb($color);
$rgbInv = array();
//y el inverso para el texto (para que se vea bien)
foreach($rgb as $col) $rgbInv[] = (255 - $col);

//creamos la imagen y la pintamos del color correspondiente
$im     = imagecreatetruecolor($ancho, $alto);
$color  = imagecolorallocate($im, $rgb[0], $rgb[1], $rgb[2]);
imagefill($im, 0, 0, $color);

//Calculamos el tamaño del texto
$caracteres = strlen($texto);
$textoAlto  = imagefontheight($size);
$textoAncho = imagefontwidth($size) * $caracteres;
//y la posicion
$x = round(($ancho - $textoAncho) / 2);
$y = round(($alto  - $textoAlto)  / 2);

//pintamos el texto
$color2 = imagecolorallocate($im, $rgbInv[0], $rgbInv[1], $rgbInv[2]);
imagettftext($im, $size, 0, $x, $y, $color2, $fuente, $texto);

//guardamos una cache
imagepng($im, $archivoCache);

//mostramos la imagen
header ('Content-Type: image/png');
imagepng($im);
imagedestroy($im);

La manera de usarlo seria:

http://domino/ruta/hasta/el/php?w=320&h=200&c=abcabc&t=ejemplo
Y quedaria:

A disfrutarlo! 😀

 Scroll to top