Hola amigos, tengo un script con el que al subir una imagen al servidor me genera de dicha imagen una miniatura a escala, ahora bien, un cliente me ha solicitado que desea mostrar además de dicha miniatura una imagen más de tamaño intermedio entre ambas imagenes(la imagen original y la miniatura), aunque no necesariamente tiene que ser de medida exactamente intermedia sino que lo que desea es crear 2 thumbnails a partir de la imagen que sube, esto para qué?, pues resulta que le estoy haciendo un catálogo de productos el cual de momento viene funcionando muy bien pero lo que ahora desea es ingresar imágenes mucho más grandes y crear de esta 2 miniaturas, la más pequeña para organizarla en la galería de imágenes del catálogo, la intermedia para el detalle del producto y la más grande(la original) como opción a verse en mayor tamaño, no sé si me dejo entender.
El script que uso y que me genera sólo un thumbnail o sea lo más usual es el siguiente:
Código PHP:
<?php
$max = 100000;
$xmax = 150;
$ymax = 150;
$nuevoDirectorio = "imagenews/";
function thumbnail($file,$dir,$ancho1,$alto1) {
if(!file_exists($dir.$file)) {
return false;
}
if(!is_dir($dir)) {
return false;
}
$a = getimagesize($dir.$file);
$ancho = $a['0'];
$alto = $a['1'];
$comprime = false;
if ($ancho > $ancho1 || $alto > $alto1) {
$comprime = true;
}
if ($a['0'] > $ancho1 && $a['1'] < $alto1) {
$alto = ($ancho1 * $a['1']) / $a['0'];
$ancho = $ancho1;
}
else if ($a['0'] < $ancho1 && $a['1'] > $alto1) {
$ancho = ($alto1 * ($a['0'])) / $a['1'];
$alto = $alto1;
}
else if ($a['0'] > $ancho1 && $a['1'] > $alto1) {
if ($a['0']/$a['1']>=1) {
$alto = ($ancho1 * $a['1'] ) / $a['0'];
$ancho = $ancho1;
}else {
$ancho = ($alto1 * ($a['0']) ) / $a['1'];
$alto = $alto1;
}
}else {
$ancho = $a['0'];
$alto = $a['1'];
}
$final = (int) strlen($file) - 4;
$nombre = (substr($file,0,$final));
$ext = (substr($file,-4,4));
$nombre = $nombre.$ext;
$mini = $dir."t_".$nombre;
$alto = ceil($alto)+1;
$ancho = ceil($ancho)+1;
if ($comprime) {
if($ext == ".jpg" || $ext == ".jpeg" || $ext == ".JPG") {
$origen = imagecreatefromjpeg($dir.$file);
$imgAncho = imagesx($origen);
$imgAlto = imagesy($origen);
$imagen = imagecreatetruecolor($ancho,$alto);
imagecopyresized($imagen,$origen,0,0,0,0,$ancho,$alto,$imgAncho,$imgAlto);
imagejpeg($imagen,$mini);
}
}
return true;
}
if($enviar) {
$file = $imgnews_name;
$nuevoNombre = time().".jpg";
if(($imgnews_size < $max) && (($imgnews_type == "image/jpeg") || ($imgnews_type == "image/pjpeg"))) {
move_uploaded_file($imgnews, "imagenews/$nuevoNombre");
$ruta = "$nuevoNombre";
$titulo = stripslashes($_POST['titulo']);
$titulo = strip_tags($titulo);
$timgnews = "t_".$ruta;
$contenido = $_POST['contenido'];
chmod("imagenews/$ruta", 0777);
mysql_query("INSERT INTO catalogo (titulo,imgnews,timgnews,contenido) VALUES('".$titulo."','".$ruta."','".$timgnews."','".$contenido."')");
echo "<strong>Producto correctamente.</strong>";
$a = getimagesize("imagenews/$ruta");
if (($a['0'] > 150) || ($a['1'] > 150)) {
$thm = thumbnail($nuevoNombre,$nuevoDirectorio,$xmax,$ymax);
}
}else {
echo "<strong>El fichero ha de ser menor a $max bytes y ser de los tipos permitidos. <a href='javascript:history.back()'>Regresar</a></strong>";
}
}else {
?>
<form name="formu" enctype="multipart/form-data" action="agregar.php" method="post">
<p>La imagen a enviar no debe exceder los 100 KB de peso. Se aceptan únicamente imágenes en formato <strong>.jpg</strong></p>
<table style="width: 100%; border:0;">
<tr>
<td><strong>Título:</strong></td>
<td><input type="text" name="titulo" /></td>
</tr>
<tr>
<td><strong>Imagen:</strong></td>
<td><input name="imgnews" type="file" /></td>
</tr>
<tr>
<td colspan="2"><strong>Contenido:</strong></td>
</tr>
<tr>
<td colspan="2">
<textarea name="contenido" id="contenido" rows="10" style="width: 95%;"></textarea>
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" name="enviar" value="Registrar datos" />
<input type="reset" value="Restablecer" />
</td>
</tr>
</table>
</form>
<?php
}
?>
Agradezco de antemano las respuestas y sugerencias que me puedan dar
Saludos