Foros del Web » Programando para Internet » PHP »

Problemas al grabar una imagen

Estas en el tema de Problemas al grabar una imagen en el foro de PHP en Foros del Web. Buenas tardes. Tengo este codigo el cual me permite grabar una imagen en php. Funciona bien , excepto que aveces graba la foto por la ...
  #1 (permalink)  
Antiguo 13/01/2011, 16:41
 
Fecha de Ingreso: diciembre-2001
Ubicación: Peru
Mensajes: 376
Antigüedad: 22 años, 4 meses
Puntos: 0
Problemas al grabar una imagen

Buenas tardes.
Tengo este codigo el cual me permite grabar una imagen en php.
Funciona bien , excepto que aveces graba la foto por la mitad.

Quiere decir que la graba, y a al hora de visualizar, solo se visualiza la mitad o menos de la foto.He intentado con una foto de 200 k y a veces graba bien, otras a la mitad. Ya que pensaba que era por una custion de tamaño de la imagen.
aqui la grabacion

Código PHP:
<?php
  
include("Connections/conectarse.php");
  
date_default_timezone_set("America/Lima"); 

// Verificamos que el formulario no ha sido enviado aun
$postback true

$ID_Biblioteca$_POST['ID_Biblioteca'];
if(
$postback){
  
// Nivel de errores
  
error_reporting(E_ALL);
  
// Constantes
  # Altura de el thumbnail en píxeles
  
define("ALTURA"100);
  
# Nombre del archivo temporal del thumbnail
  
define("NAMETHUMB""c:/windows/temp/thumbtemp"); //Esto en servidores Linux, en Windows podría ser:
// define("NAMETHUMB", "c:/windows/temp/thumbtemp"); y te olvidas de los problemas de permisos
  # Servidor de base de datos
  
define("DBHOST""192.168.0.201");
  
# nombre de la base de datos
  
define("DBNAME""horassoporte");
  
# Usuario de base de datos
  
define("DBUSER""webadmin");
  
# Password de base de datos
  
define("DBPASSWORD""g4wu2010");
  
// Mime types permitidos
  
$mimetypes = array("image/jpeg""image/pjpeg""image/gif""image/png","image/pjpeg");
  
// Variables de la foto
  
$name $_FILES["foto"]["name"];
  
$type $_FILES["foto"]["type"];
  
$tmp_name $_FILES["foto"]["tmp_name"];
  
$size $_FILES["foto"]["size"];
  
// Verificamos si el archivo es una imagen válida
  
if(!in_array($type$mimetypes))
    die(
"El archivo que subiste no es una imagen válida");
  
// Creando el thumbnail
  
switch($type) {
    case 
$mimetypes[0]:
    case 
$mimetypes[1]:
      
$img imagecreatefromjpeg($tmp_name);
      break;
    case 
$mimetypes[2]:
      
$img imagecreatefromgif($tmp_name);
      break;
    case 
$mimetypes[3]:
      
$img imagecreatefrompng($tmp_name);
      break;
  }
  
$datos getimagesize($tmp_name);
  
$ratio = ($datos[1]/ALTURA);
  
$ancho round($datos[0]/$ratio);
  
$thumb imagecreatetruecolor($anchoALTURA);
  
imagecopyresized($thumb$img0000$anchoALTURA$datos[0], $datos[1]);
  switch(
$type) {
    case 
$mimetypes[0]:
    case 
$mimetypes[1]:
      
imagejpeg($thumbNAMETHUMB);
          break;
    case 
$mimetypes[2]:
      
imagegif($thumbNAMETHUMB);
      break;
    case 
$mimetypes[3]:
      
imagepng($thumbNAMETHUMB);
      break;
  }
  
// Extrae los contenidos de las fotos
  # contenido de la foto original
  
$fp fopen($tmp_name"rb");
  
$tfoto fread($fpfilesize($tmp_name));
  
$tfoto addslashes($tfoto);
  
fclose($fp);
  
# contenido del thumbnail
  
$fp fopen(NAMETHUMB"rb");
  
$tthumb fread($fpfilesize(NAMETHUMB));
  
$tthumb addslashes($tthumb);
  
fclose($fp);
  
// Borra archivos temporales si es que existen
  
@unlink($tmp_name);
  @
unlink(NAMETHUMB);
  
// Guardamos todo en la base de datos
  #nombre de la foto
  
$nombre $_POST["nombre"];
  
$link mysql_connect(DBHOSTDBUSERDBPASSWORD) or die(mysql_error($link));;
  
mysql_select_db(DBNAME$link) or die(mysql_error($link));
  
$sql "INSERT INTO bibliofoto(nombre, foto, thumb, mime, ID_Biblioteca)
    VALUES
    ('$nombre', '$tfoto', '$tthumb', '$type', '$ID_Biblioteca')"
;
  
mysql_query($sql$link) or die(mysql_error($link)); 
  exit();
  
header ("location:ExitoFoto.php?ID_Biblioteca=".$ID_Biblioteca."");
  
}
?>
Aqui la visualizo

Código PHP:
<?php require_once('Connections/conectarse.php');
header("Content-type: image/pjpeg");
$ID_Foto =$_GET['ID_Foto'];
$sql sprintf("SELECT foto, mime FROM bibliofoto where ID_Foto = %s "$ID_Foto);
# Conexión a la base de datos
mysql_select_db($database_conectarse$conectarse) or die(mysql_error($conectarse));
$conn mysql_query($sql$conectarse) or die(mysql_error($conectarse));
$datos mysql_fetch_array($conn);
$imagen $datos[0];
// El mime type de la imagen
$mime $datos[1];
header("Content-Type: $mime");

    echo 
$imagen;

?>
Espero me puedan ayudar, ya que la interface funciona bien ....solo que no entiendo por que la foto se ve a medias.

Gracias
  #2 (permalink)  
Antiguo 15/01/2011, 08:12
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: Problemas al grabar una imagen

Estas seguro de que este te devuelve las proporciones que necesitas?

Código PHP:
Ver original
  1. $datos = getimagesize($tmp_name);
  2.   $ratio = ($datos[1]/ALTURA);
  3.   $ancho = round($datos[0]/$ratio);

Etiquetas: grabar
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 05:07.