Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/01/2011, 16:41
Murallitz
 
Fecha de Ingreso: diciembre-2001
Ubicación: Peru
Mensajes: 376
Antigüedad: 23 años, 2 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