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($ancho, ALTURA);
imagecopyresized($thumb, $img, 0, 0, 0, 0, $ancho, ALTURA, $datos[0], $datos[1]);
switch($type) {
case $mimetypes[0]:
case $mimetypes[1]:
imagejpeg($thumb, NAMETHUMB);
break;
case $mimetypes[2]:
imagegif($thumb, NAMETHUMB);
break;
case $mimetypes[3]:
imagepng($thumb, NAMETHUMB);
break;
}
// Extrae los contenidos de las fotos
# contenido de la foto original
$fp = fopen($tmp_name, "rb");
$tfoto = fread($fp, filesize($tmp_name));
$tfoto = addslashes($tfoto);
fclose($fp);
# contenido del thumbnail
$fp = fopen(NAMETHUMB, "rb");
$tthumb = fread($fp, filesize(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(DBHOST, DBUSER, DBPASSWORD) 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."");
}
?>
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;
?>
Gracias
![Porras](http://static.forosdelweb.com/fdwtheme/images/smilies/porra.gif)