hola, amigos necesito de su ayuda una vez mas
mediante el siguiente codigo cargo una fotos de productos ya redimencionadas con un tamaño mas pequeño que el ogirinal de la foto.
Código PHP:
$patch=opendir('./imagenesupload/');
$entry =$archivo2;
$ROOT ='./imagenesupload/'.$entry;
if (file_exists($ROOT)) {
echo "<img src='imagenesupload/rd.php?imagen=$archivo2'>";
} else {
echo "<img src='imagenesupload/rd.php?imagen=imagennodisponible.jpg'>";
}
el archivo llamado rd.php es con el cual redimenciono las fotos aqui esta el codigo
Código PHP:
$anchura=140;
$hmax=140;
$nombre=basename($_GET['imagen']);
$datos = getimagesize($nombre);
if($datos[2]==1){$img = @imagecreatefromgif($nombre);}
if($datos[2]==2){$img = @imagecreatefromjpeg($nombre);}
if($datos[2]==3){$img = @imagecreatefrompng($nombre);}
$ratio = ($datos[0] / $anchura);
$altura = ($datos[1] / $ratio);
if($altura>$hmax){$anchura2=$hmax*$anchura/$altura;$altura=$hmax;$anchura=$anchura2;}
$thumb = imagecreatetruecolor($anchura,$altura);
imagecopyresampled($thumb, $img, 0, 0, 0, 0, $anchura, $altura, $datos[0], $datos[1]);
if($datos[2]==1){header("Content-type: image/gif"); imagegif($thumb);}
if($datos[2]==2){header("Content-type: image/jpeg");imagejpeg($thumb);}
if($datos[2]==3){header("Content-type: image/png");imagepng($thumb); }
imagedestroy($thumb);
ahora consegui este script que funciona bien para agregar marca de agua pero la verdad no se ni siquira donde ponerlo, si dentro del archivo llamado rd.php o lo coloco en el script donde llamo el archivo, la verdad no tengo ni idea de como agregarlo, ni de como acoplar ambos script, por favor denme una mano
watermark.php
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.tudominio.com/imagenesupload/Wallpaper.jpg';
$marca = 'http://www.tudominio.com/imagenes/watermark.png';
header("Content-Type: image/jpeg");
echo obtenerImagen($imagen, $marca, 'right', 'bottom');
NOTA: hago destacar que
1. estoy trabajando directamente en el servidor no trabajo localmente
2. la carpeta de las imagenes a cargar y redimencionar ($archivo2) estan en la siguiente direccion
http://www.midominio.com/imagenesupload/
3. la imagen de marca de agua (watermark.png) esta en la siguiente direccion
http://www.midominio.com/imagenes/
Mil gracias por su ayuda
una explicacion no me caeria mal la orientacion. gracias