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);
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');
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