Foros del Web » Programando para Internet » PHP »

¿Se puede cambiar el tmp_name?

Estas en el tema de ¿Se puede cambiar el tmp_name? en el foro de PHP en Foros del Web. Hola a todos, y gracias por leerme, tengo una dudaza con la que llevo una rato largo. El tema es que subo una imagen y ...
  #1 (permalink)  
Antiguo 04/04/2008, 04:03
Avatar de sirguy  
Fecha de Ingreso: septiembre-2006
Ubicación: Mallorca
Mensajes: 959
Antigüedad: 17 años, 6 meses
Puntos: 12
¿Se puede cambiar el tmp_name?

Hola a todos, y gracias por leerme, tengo una dudaza con la que llevo una rato largo. El tema es que subo una imagen y quiero redimensionarla, el caso es que primero la guardo y luego la redimensiono. ¿Se puede redimensionar el archivo temporal y así no guardar la imagen? Si es así como cambio el nombre del archivo temporal:

$afoto=1;
if (strpos($tipo_archivo, "gif")){
$ter="gif";
}if (strpos($tipo_archivo, "jpeg")){
$ter="jpg";
}
$nombrefoto="noticia".$afoto.".".$ter;
$tipo_archivo = $HTTP_POST_FILES['uploadedfile']['tmp_name'], $nombrefoto;


Me dice que sobra la coma. Y no se me ocurre nada. En fin, con lo facilito que era el flash... lo que tiene ampliar horizontes.

gracias

Un saludo
__________________
Chanante!
  #2 (permalink)  
Antiguo 04/04/2008, 09:08
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: ¿Se puede cambiar el tmp_name?

Te sobra una coma porque el operador en PHP para concatenar strings es el punto ".", y no puedes cambiar el nombre del archivo temporal ya que ese es autogenerado por PHP. Lo mejor que puedes hacer es copiarlo a tu carpeta de imágenes y ahí hacer el cambio de tamaño.

Saludos.
  #3 (permalink)  
Antiguo 04/04/2008, 10:42
 
Fecha de Ingreso: abril-2006
Mensajes: 1.128
Antigüedad: 18 años
Puntos: 33
Re: ¿Se puede cambiar el tmp_name?

sirguy:
Primero subes la imagen, al mismo tiempo utilizas la funcion
RENAME de php para darle el nombre que tu quieras.
Segundo, utilizando el nombre que le has dado, la redimensionas
y la guardas con el mismo nombre y en el mismo lugar:
El resultado final es UNA IMAGEN GUARDADA Y REDIMENSIONADA.
En otras palabras la imagen redimensionada sustituye a la inicial y por ende esta ultima desaparece.
Saludos
Franco
Example#1 Ejemplo con rename()
<?php
rename("archivo_inicial.jpg", "mi_nuevo_archivo.jpg");
?>
Cuando redimensionas con mi_nuevo_archivo.jpg
solo queda esta misma imagen redimensionada.
  #4 (permalink)  
Antiguo 07/04/2008, 03:32
Avatar de sirguy  
Fecha de Ingreso: septiembre-2006
Ubicación: Mallorca
Mensajes: 959
Antigüedad: 17 años, 6 meses
Puntos: 12
Re: ¿Se puede cambiar el tmp_name?

Gracias a todos, me ha servido y el ejemplo ya es funcional!! oe! Lo de tardar tanto en responder es por el fin de semana que me lo tomo libre y desconecto. Muchas gracias. En todo caso tengo otra duda que abriré en breve.
__________________
Chanante!
  #5 (permalink)  
Antiguo 07/04/2008, 04:37
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 20 años, 4 meses
Puntos: 5
Re: ¿Se puede cambiar el tmp_name?

He probado por curiosidad a ver si se podía trabajar directamente con el archivo que se sube por defecto a la carpeta temporal utilizándolo como argumento en la función imagecreatefromjpeg, y no me ha dado ningún problema.

Luego después de redimensionar partiendo del archivo que esta en la carpeta temporal he utilizado la función imagejpeg pasando como segundo parámetro(guardar en archivo) el nombre original del archivo subido y me lo guarda redimensionado en la carpeta dónde esté el script(siempre que tenga permiso de escritura).

Es que claro pensándolo bien, si no vas a usar para nada la imagen que se sube, por qué copiarla para acabar trabajando con esa copia que luego encima redimensionas.

Estoy de acuerdo en que si se puede redimensionar el archivo temporal te evitas un paso tonto.

Código PHP:
<?
if(!$_POST['Enviar'])
{
?>
<form action="numeros.php" method="post" enctype="multipart/form-data">
<input type="file" name="foto" id="foto">
<input type="submit" name="Enviar" value="enviar">
</form>
<?}
else
{
// Variables que indican el archivo de la imagen y el nuevo tamano
$name=$_FILES['foto']['name'];
$filename $_FILES['foto']['tmp_name'];
$percent 0.5;

// Content-type para el navegador

// Se obtienen las nuevas dimensiones
list($width$height) = getimagesize($filename);
$newwidth $width $percent;
$newheight $height $percent;

// Cargar la imagen
$thumb imagecreatetruecolor($newwidth$newheight);
$source imagecreatefromjpeg($filename);

// Redimensionar
imagecopyresized($thumb$source0000$newwidth$newheight$width$height);

// Mostrar la nueva imagen
imagejpeg($thumb,$name,100);

}
Es sólo una prueba para ver si se podía hacer, no chequeo tipo de archivo subido ni ni tamaño ni extensiones...

Pero claro el motivo de ahorrar el paso de copiar la imagen subida, sólo tiene sentido si no vas a usar la original, si tu intención es digamos crear un thumbnail que redireccione a la imagen grande, si que necesitarías la imagen subida con lo cual si que habría que usar move_uploaded_file()


Un saludo
__________________
[+]
[+]

Última edición por yoseman; 07/04/2008 a las 08:30
  #6 (permalink)  
Antiguo 07/04/2008, 08:23
Avatar de sirguy  
Fecha de Ingreso: septiembre-2006
Ubicación: Mallorca
Mensajes: 959
Antigüedad: 17 años, 6 meses
Puntos: 12
Re: ¿Se puede cambiar el tmp_name?

Gracias por la prueba, pues la verdad es que quiero redimensionar la original y además crear un thumbnail por lo que así me ahorraría el proceso de guardar la primera que seguro que es la que más pesa.

Sigo con lo del checkbox, como un campeón!

Un saludo
__________________
Chanante!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:15.