Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/07/2012, 13:44
javy
 
Fecha de Ingreso: septiembre-2002
Mensajes: 153
Antigüedad: 21 años, 7 meses
Puntos: 1
Codigo funcionando pero falla los archivos png

Hola a todos de nuevo:

Soy Javy.

Hace unos dos o tres años, conseguí (a base de "cachos de código") crear este código para subir imágenes a un servidor y redimensionarlas.

Código:
$sql = "SELECT * FROM rotvinilosimg WHERE rotvinilosimgid=".$_GET['rotvinilosimgid'];
						
			$res = mysql_query($sql) or die (mysql_error());

			if(mysql_num_rows($res) >0){
			while ($imagen = mysql_fetch_array($res)) {
			
			// BUSCANDO INFORMACIÓN DE LA IMAGEN
			$tipoimagen = GetImageSize($imagen[rotvinilosimgfoto]);
			
			// CARGANDO EN MEMORIA LA IMAGEN A REDIMENSIONAR
			if($tipoimagen[2]==1){$imagen_original = @imagecreatefromgif($imagen[rotvinilosimgfoto]);}
			if($tipoimagen[2]==2){$imagen_original = @imagecreatefromjpeg($imagen[rotvinilosimgfoto]);}
			if($tipoimagen[2]==3){$imagen_original = @imagecreatefrompng($imagen[rotvinilosimgfoto]);}

			// OBTENIENDO EL ANCHO DE LA IMAGEN
			$ancho_original = imagesx($imagen_original);

			// OBTENIENDO EL ALTO DE LA IMAGEN
			$alto_original = imagesy($imagen_original);

			// SI SE QUIERE UN ANCHO FINAL FIJO, SE CALCULA EL ALTO DE FORMA PROPORCIONADA
			$ancho_final = 600;

			// ANCHO FINAL EN PIXELES
			$alto_final = ($ancho_final / $ancho_original) * $alto_original;

			// SI SE CONOCE EL ALTO FINAL FIJO, SE CALCULA EL ANCHO DE FORMA PROPORCIONADA
			// PARA ESO, COMENTAR LAS DOS LÍNEAS ANTERIORES Y DESCOMENTAR LAS DOS SIGUIENTES:

			/*$alto_final = 250; //Alto final en pixeles
			$ancho_final = ($alto_final / $alto_original) * $ancho_original;*/

			// SE CREA UNA IMAGEN VACÍA EN BLANCO, CON EL ALTO Y EL ANCHO QUE TENDRÁ LA IMAGEN REDIMENSIONADA
			$imagen_redimensionada = imagecreatetruecolor($ancho_final, $alto_final);

			// SE COPIA LA IMAGEN ORIGINAL, CON LAS NUEVAS DIMENSIONES, A LA IMAGEN EN BLANCO ANTERIOR
			imagecopyresampled($imagen_redimensionada, $imagen_original, 0, 0, 0, 0, $ancho_final, $alto_final, $ancho_original, $alto_original);

			// SE GUARDA LA IMAGEN REDIMENSIONADA. SI SE GUARDA EN EL MISMO SITIO Y CON EL MISMO NOMBRE, SOBRESSCRIBIRÁ LA ORIGINAL
			if($tipoimagen[2]==1){imagegif($imagen_redimensionada, $imagen[rotvinilosimgfoto]);}
			if($tipoimagen[2]==2){imagejpeg($imagen_redimensionada, $imagen[rotvinilosimgfoto]);}
			if($tipoimagen[2]==3){imagepng($imagen_redimensionada, $imagen[rotvinilosimgfoto]); }

			// SE LIBERAN RECURSOS, DESTRUYENDO LAS IMÁGENES QUE ESTABAN EN MEMORIA
			imagedestroy($imagen_original);
			imagedestroy($imagen_redimensionada);
Hasta la fecha no he tenido problemas, ya que siempre usaba archivos "jpg" para subirlos al servidor.

Ahora tengo que subir archivos "png" y lo hace todo bién menos respetar la transparencia.

He buscado por el foro y con las diferentes respuestas que he encontrado he modificado el código pero no he conseguido nada.

He revisado el servidor y tiene activada la librería GD y la versión de PHP es la 5.2.17.

¿Me podeis echar un cable, por favor?

Gracias de antemano y un saludo:

Javy