- si hay temp.jpg lo borro (cambiando permisos, vericando si existe, etc)
-abro el archivo posteado (imagecreatefrom)
-le cambio el tamaño, y lo guardo como un temp.jpg
-habro la imagen + la previsualizacion (fopen, fread, addslashes)
- hago la consulta sql, y los inserto
- todo kk
pero luego, cuando quiero ver los resultados, la imagen y su previsualizacion, la img bien, la previsualizacion NO (a veces si, a veces no, asi de loco), depure bien, ningun error, intente borrar los temp.jpg, comprobando si existen o no, cambiando los permisos si hacen falta, y muchas otras cosas mas.
no se que puede ser...
no puedo detectar que sera, sospecho mucho de la funcion imagejpeg() no funciona siempre
algo que se me ocurrio, generar la previsualizacion sin crear el archivo temporal, pero no tengo idea, ni se me ocurre como hacerlo.
Si alguien me pudiese ayudar les estaria Muy agradecido.-
funcion cambiar tamaño
Código:
Funcion para subir (Resumida)function CambiarTamanioImg($path,$tipo,$tamanio) { switch($tipo) { case 1: //$tipo="GIF"; $fuente = imagecreatefromgif($path); break; case 2: ///$tipo="JPEG"; $fuente = imagecreatefromjpeg($path); break; case 3: //$tipo="PNG"; $fuente = imagecreatefrompng($path); break; } $picsize = $tamanio; $imgancho = imagesx ($fuente); $imgalto =imagesy($fuente); if( $imgalto > $tamanio || $imgancho>$tamanio ) { if($imgancho > $imgalto) { $aspecto = $imgalto / $imgancho; $ancho = $picsize; $alto = abs($ancho * $aspecto); } else //max alto { $aspecto = $imgancho / $imgalto; $alto = $picsize; $ancho = abs($alto * $aspecto); } } else { $ancho=$imgancho; $alto=$imgalto; } $imagen=ImageCreateTrueColor($ancho,$alto); ImageCopyResized($imagen,$fuente,0,0,0,0,$ancho,$alto,$imgancho,$imgalto); imagejpeg($imagen,"temp/prev".$tamanio."0.jpg",90); return "temp/prev".$tamanio."0.jpg"; }
Código:
<? if(file_exists("temp/prev6600.jpg")) { if(chmod("temp/prev6600.jpg",0777)) { echo "CHMOD 6600"; } if(unlink("temp/prev6600.jpg")) { echo "img grande borrada"; } } if(file_exists("temp/prev1000.jpg")) { if(chmod("temp/prev1000.jpg",0777)) { echo "CHMOD 1000"; } if(unlink("temp/prev1000.jpg")) { echo "img chica borrada"; } } if($enviar) { mysql_pconnect($OPTION[mysqlserver],$OPTION[mysqluser],$OPTION[mysqlpass]); $archivo = $_FILES["foto"]["tmp_name"]; $tamanio = $_FILES["foto"]["size"]; $tipo = $_FILES["foto"]["type"]; $info=getimagesize($foto); if($info[2] <= 3) ///formato de img === ok ? { switch($info[2]) { case 1: $tipo="GIF"; break; case 2: $tipo="JPEG"; break; case 3: $tipo="PNG"; break; } //$foto="c:\windows\tmp\ssss.tmp" //genero previsualizacion: $prev_x=CambiarTamanioImg($foto,$info[2],$OPTION[tamanio]); $fprev=fopen($prev_x,"rb"); $img_prev=fread($fprev,filesize($prev_x)); $img_prev=addslashes($img_prev); fclose($fprev); //open img para la db $foto_resized=$foto; $fp = fopen($foto_resized, "rb"); $contenido = fread($fp,filesize($foto_resized)); $contenido = addslashes($contenido); fclose($fp); $peso=filesize($foto_resized)/1024; if(ereg(".",$peso)) { $p = explode(".",$peso); $peso = str_replace(".","",$p[0]); $peso.=" KB."; } $tim=date("Y-m-d H:i:s"); $info=getimagesize($foto_resized); $tam=$info[0]."x".$info[1]; $id_poster=$se_user->getId(); $nombre=trim($nombre); $comentario=trim($comentario); $res=mysql_db_query($OPTION[mysqldb],"INSERT INTO fotos (id_usuario, fecha_post, visitas, nombre, comentario, extension, foto, tamanio, peso, foto_prev) VALUES('$id_poster', '$tim', 0, '$nombre', '$comentario','$tipo','$contenido','$tam', '$peso', '$img_prev')"); } }