PHP - Calidad en imágenes redimensionadas al subirlas por php

 
Vista:
Imágen de perfil de Jose maria
Val: 267
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Calidad en imágenes redimensionadas al subirlas por php

Publicado por Jose maria (4 intervenciones) el 13/04/2014 22:11:57
Por razones de espacio y tamaño de imagen, las imágenes que sube el usuario las redimensiono de forma que se mantiene su formato (vertical, cuadrado o apaisado) dentro del espacio definido (en mi caso $miniatura_ancho_maximo = 76; miniatura_alto_maximo = 76; )

El código de reducción de imagen es este:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?php
/* Codigo Completo (Proporción) */
$ruta_imagen = $uploaddir . $nuevofilename;
$miniatura_ancho_maximo = 76;
$miniatura_alto_maximo = 76;
$info_imagen = getimagesize($ruta_imagen);
$imagen_ancho = $info_imagen[0];
$imagen_alto = $info_imagen[1];
$imagen_tipo = $info_imagen['mime'];
$proporcion_imagen = $imagen_ancho / $imagen_alto;
$proporcion_miniatura = $miniatura_ancho_maximo / $miniatura_alto_maximo;
 
if ( $proporcion_imagen > $proporcion_miniatura ){
  $miniatura_ancho = $miniatura_ancho_maximo;
  $miniatura_alto = $miniatura_ancho_maximo / $proporcion_imagen;
} else if ( $proporcion_imagen < $proporcion_miniatura ){
  $miniatura_ancho = $miniatura_ancho_maximo * $proporcion_imagen;
  $miniatura_alto = $miniatura_alto_maximo;
} else {
  $miniatura_ancho = $miniatura_ancho_maximo;
  $miniatura_alto = $miniatura_alto_maximo;
}
 
switch ( $imagen_tipo ){
  case "image/jpg":
  case "image/jpeg":
    $imagen = imagecreatefromjpeg( $ruta_imagen );
    break;
  case "image/png":
    $imagen = imagecreatefrompng( $ruta_imagen );
    break;
  case "image/gif":
    $imagen = imagecreatefromgif( $ruta_imagen );
    break;
}
 
$lienzo = imagecreatetruecolor( $miniatura_ancho, $miniatura_alto );
 
imagecopyresampled($lienzo, $imagen, 0, 0, 0, 0, $miniatura_ancho, $miniatura_alto, $imagen_ancho, $imagen_alto);
 
imagejpeg($lienzo, $uploaddir . $nuevofilename, 80);
?>

El problema es que las imágenes con transparencia de fondo ).png) me las pasa a negro y los ,gifs animados con fondo transparente quedan estáticos con fondo negro. Si las dimensiones son inferiores las mantiene correctamente en su tamaño original.

¿Hay alguna solución o error en la programación?

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro
Val: 1.918
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Calidad en imágenes redimensionadas al subirlas por php

Publicado por Alejandro (594 intervenciones) el 16/04/2014 01:52:13
Estas tomando una imagen (JPG, PNG o GIF) y estas creando un archivo de "FORMATO JPG" con extencion de tu archivo de origen (JPG, PNG o GIF).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jose maria
Val: 267
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

[Solucionado] Calidad en imágenes redimensionadas al subirlas por php

Publicado por Jose maria (4 intervenciones) el 16/04/2014 12:57:14
Gracias Alejandro.

Cuando uno revisa diez veces el código, no ve lo que tiene delante.

El problema está corregido y controlado desde $imagen_tipo = $info_imagen['mime'].

Solucionado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar