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
}
?>
Saludos