Código PHP:
function obtenerImagenResource($file)
{
if (!is_string($file))
{
return false;
}
$data = getimagesize($file);
if ($data === false)
{
return false;
}
switch ($data['mime'])
{
case 'image/jpeg':
case 'image/pjpeg':
return imagecreatefromjpeg($file);
break;
case 'image/png':
return imagecreatefrompng($file);
case 'image/gif':
return imagecreatefromgif($file);
}
return false;
}
function obtenerPosiciones($x, $y, &$imagen, &$marca)
{
$imagen_ancho = imagesx($imagen);
$imagen_alto = imagesy($imagen);
$marca_ancho = imagesx($marca);
$marca_alto = imagesy($marca);
$z = 40;
$anchox = round((($imagen_ancho / $marca_ancho) / $z) * $marca_ancho);
$altox = round((($imagen_alto / $marca_alto) / $z) * $marca_ancho);
switch ($x)
{
case 'left':
$x = $anchox;
break;
case 'center':
$x = round(($imagen_ancho / 2) - ($marca_ancho / 2));
break;
case 'right':
$x = $imagen_ancho - $marca_ancho - $anchox;
break;
default:
if (!is_numeric($x) || $x > ($imagen_ancho - $marca_ancho))
{
$x = 0;
}
}
switch ($y)
{
case 'top':
$y = $altox;
break;
case 'middle':
$y = round(($imagen_alto / 2) - ($marca_alto / 2));
break;
case 'bottom':
$y = $imagen_alto - $marca_alto - $altox;
break;
default:
if (!is_numeric($y) || $y > ($imagen_alto - $marca_alto))
{
$y = 0;
}
}
return array($x, $y);
}
function obtenerImagen($imagen, $marca, $x = 0, $y = 0)
{
$imagen = obtenerImagenResource($imagen);
if ($imagen === false)
{
return false;
}
$marca = obtenerImagenResource($marca);
if ($marca === false)
{
if ($imagen !== false)
{
imagedestroy($imagen);
}
return false;
}
list($x, $y) = obtenerPosiciones($x, $y, $imagen, $marca);
imagecopy($imagen, $marca, $x, $y, 0, 0, imagesx($marca), imagesy($marca));
ob_start();
if (imagejpeg($imagen))
{
$return = ob_get_contents();
}
ob_end_clean();
imagedestroy($imagen);
imagedestroy($marca);
return $return;
}
$imagen = 'http://www.google.es/intl/en_com/images/logo_plain.png';
$marca = 'http://www.kibit.cl/blog/wp-content/uploads/icons/google_earth_logo.png';
header("Content-Type: image/jpeg");
echo obtenerImagen($imagen, $marca, 'center', 'middle');