Foros del Web » Programando para Internet » PHP »

Problemas con GD

Estas en el tema de Problemas con GD en el foro de PHP en Foros del Web. Estoy tratando de crear una imagen a partir de GD. Este es el cdigo: Cdigo PHP:  header ( "Content-type: image/jpeg" );   $img  =  imagecreatefromjpeg ( ...
  #1 (permalink)  
Antiguo 14/02/2005, 23:59
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicacin: Por ah en algn sitio
Mensajes: 1.844
Antigedad: 21 aos, 4 meses
Puntos: 1
Problemas con GD

Estoy tratando de crear una imagen a partir de GD. Este es el cdigo:
Cdigo PHP:
 header("Content-type: image/jpeg");
 
$img imagecreatefromjpeg($pathtodir.$dirthumb.$image);
 
imagejpeg($img,'',80);
 
imagedestroy($img); 
pero sorpresa lo que me pone en la pagina es esto que no se como diablos quitarlo:
Cita:
JFIF;CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), quality = 80 C   %# , #&')*)-0-(0%()(C   (((((((((((((((((((((((((((((((((((((((((((((( (((((" ĵ}!1AQa"q2#BR$3 br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz  ĵw!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvw xyz ?TSҮIgy$*NaT\7'AR~q]FL\Zq'` Nk[;@]Υvǔmu*)<l#=jŧ_͓՛ o1wb5/ */= ^3΋+ǧT]Cy7%rܻ}kQ} ְnniv6~͔%?1W' UElU5~S*khC+xu~W~15BOZ l2]G5MJ^|N52\OI/#N^4 A/CScw OG>' O)?Edojt} IvGɀSU)+\sE'9o- o)نq_Fi .t=6o#'粁 D2 ދJT]Aml$+v{r8^671:κ4#%v|-܈ddhvL5?A5֝u{blFbF1 ́*^zdW^/%uNE9(8 ')Һi#5{8%,xul՟ ޞK.#I )|]*C$2!d Ć lX |}zU1;W }G*h A?28J!Q } &0Z}G޲t-2E K#Ev!bBlԺI$BIpƋp=5DOT pW;fg_6Gsg :L_Ӟ& ud7TV؈9*֟$gBӌݿq[;V ]G==U@/z]AxP^ W!b c; TǐWŔ'.j21Y`A_4m5R+Ӣ2 G1_B|L-kTwt:|A $0!ϼWhe at#8/+Ȃ rH$䔩VȯJaUq[} [ZXD%c0i+gG'&N~DqZi$r#s ;Odm;J߇HuwfI ͕9s>-`Wʑ f$n$0 0A#9])8%=_MSV(pD<y`QK9<ռAh qjCibG,kWo%d*2 mSxgP]c6ұ- F3~uoj`t<ë:z" =;Sn8OvǛUrVAK hd)7@ F-,@Mx-.r|9E"1ŕoByzTLv.M+:~ "GpLU,kn*#>Հ( Q?ݎ{S*ґj]Ha֕e +!nk\ IrʷIu6E|{(Xyk=®\K<@| E8yjN1We#=0uZ㿁 _M Yn#2ݑӾ:fᯆo [KKk;#`5Gn\ۙn'Gi%̒J搓I& QLS=OtlDcq邌@3Ke5 0~XG8JQ1ڬf"Y8<zIypqx0=O~kv '_7BR>Z|+#B6_AЂdk_MiPî[uHg̻9خb^FKk֗3B|zO*R 3]$M<O ,!w 0={W{{49Ӻ/ %cO}' x~c')/c|?35&PW$p:H'c`7ԃ׎ m3e`R? u)Eh fϫhua%ǛG#px' pk;]i4nc[A^0^42H!!A@Y''p2q^}l[<0'O+$RYF21]E$KWF6c ؂Tiͻ8Xaq3*teQ" 3ׁSk4Ri־m#$SE:(2N?o tc7$V1ԲҏJu9>jO22W൸ 'j9f,p**?e^?V֞dqN͍ )÷ dqsҦkORHd_gĚʹQ ow`hC`FX=)[Asi0Ɛ3.qFF+i^9c b"9P<6`c8;E{ox÷Zt =HQ ; n(sgO۴t;RtV\}4Z\]x_V]J(Z\ێ@2s`xX9#;}:1פA+]i7>}S\vq[66m~{u=kؼm;&A\Mqxnxջ+ j2jRV>e2~7 Yz5xpWGEq#mz5k[jʆaj-?pc񩴲c@!S[ p;hs}ykM:cMPc dj tȇWI1h Y=wclAGb2:zRQ^8鵈j wj^JaA$r'b?ӽ}@:WY2+٥R,9.Wi ==Ԗ2\safaCVŒ##v:N >ů*]a*%BLx# nG^9S%mTqO+*FԿgC^]Gms*;_ycf#Hq:t:(ڡ ޅ̬~.D$P)056k,؂)N0 dθjJVo K:]ROܬ;쐅g ҧUIA%<r~3kgo1̤G _Cے9I.5;f&^9"Z(ӛѻ^L ̳H * A[ۖ ssq"ס[84& ,wO<&"?A9JPS$$NMz :9Tg`S*`ܩGjNzjX?/z4Kc8*C]P_R.Q*&/N?YCv6AAsD tc~6[K*E2?+8* ܂72)0²ߌK@%wOǡxphv7 3d6R,Km@TFNF4mj܏cƥô BA_E_g$#P_'WB)*{_FXq 9?xWqFVK'ijKxl"F 23 =k7 *xaKRq? #5ya<,yx\DvΏ1Zޟ|hE޺c cQ1!S:/k56T?3ſnn|۸#uc{ky(F 8$g jA*g$_׫Mo$>(Y"0:\Y B=*9.9szHow}w]}!M'LN@R>pG?ְ-#TK*%c qPZX!|A(pIzǏuߺY%O[pzI+b\x>kCI*#I1&zx} :8D>ɬ_nZyX/xzE3?8eUչ<M<|8#8 |{WYeDX0Ҷqz-? e<ҙ>}k)Yd\8~GV<TF+'}ʅ FGvcS*;m>N<xzctEC_li[hZA5@C iBHT?vҏÚ ET|X%o$?e5Ÿ85xZU&<% "\ty|<^\N cFgRwzIs*<X=Z PȒ,vRJXrk14_W\*^IV +vN~0 24 9RkGVl!/6N 3^xcO]R&YJ@#'L (dtI[(3?ʻ뗚to3[1#LC]+{ϒ=Zu,.vp^BYDl0 HFFGn;WkZ<:Ly'?+sk suɔ I!w`F椊]Khnv/"ay|>ȆyqT{`G?"/ jrMxr;ɢ6I!*pa8 DwҤд,S'/#gOZn|\(AOZ6 1c$$!=9' OJNCQGA*4iBr8j.fZn|og$ ;Nr<}ԲJ ַ"<y|EQNrE>_Czo}8* L%mÏ[S e΅PCZ}qEO\#}*$]@ϸN5'i]X*A~Ys5{GXEfjvczjei 5.e9=T-RAyMyPv?/Xַ{,Px.\A'nBJHe.}^ i3Hc8'S*cUqH 7/$cw56x]dFpЃ[0b&W#QAW4m|Ajڴam+ w*/\#muzlr84w6_eΫr?Zc^o֯3MQ]*CJm;_&!r!O:j"cǹ $IJ?&X1ts*ϣ8B 鮓 ;W?AWvy8ןBkc෈ռ?Xh!3*r X= -#է8h 8#5@gTWXx'bfQk]EO Ɍ=ϔ%L#\tAo)H v |8)5UhKw8pn^
una cosa donde pongo ese cdigo hay antes HTML por lo que he puesto ob_start() y ob_end_flush() al principio y final de la pagina para que no me de error de cabeceras. Tiene esto algo que ver?
__________________
Ing. Reynier Prez Mira
  #2 (permalink)  
Antiguo 15/02/2005, 02:21
 
Fecha de Ingreso: febrero-2005
Mensajes: 396
Antigedad: 19 aos, 2 meses
Puntos: 1
Justo eso ha sido respondido hace un rato en otro hilo:

http://www.forosdelweb.com/f18/graficos-jpgraph-270593/

La idea es que el grfico tiene que ser un fichero distinto a la pgina html, y en dicha pgina debes poner un tagde imagen apuntando a tu nueva imagen creada con gd.

Un saludo

Zerjillo
  #3 (permalink)  
Antiguo 15/02/2005, 07:01
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicacin: Por ah en algn sitio
Mensajes: 1.844
Antigedad: 21 aos, 4 meses
Puntos: 1
Problemas

Tengo un problema. La cosa es que yo estoy sacando las imgenes de un directorio y a la hora de mostrarlas solo me saca una sola en vez de todas las que tengo en el directorio. Este es el cdigo encargado de mostrar las imgenes:
Cdigo PHP:
include("configuracion.inc.php");
global 
$directorio,$dirthumb;
    
$path getcwd();
    
$pathtodir substr(substr($path,0,-1),0,strrpos($path,"\\"));
    
$files = array();
    if (
$handle opendir($pathtodir.$dirthumb)) {
        while (
false !== ($file readdir($handle))) {
            if (
$file != "." && $file != "..") {
                if (
eregi("\.jpe?g$"$file) || eregi("\.gif$"$file) || eregi("\.png$"$file)){
                    
$files[] = $file;
                }
            }
        }
        
closedir($handle);
    }
    foreach (
$files as $image) {
        if(
file_exists($pathtodir.$dirthumb.$image)){
            
ob_start();
            
header("Content-type: image/jpeg");
            
$img imagecreatefromjpeg($pathtodir.$dirthumb.$image);
            
imagejpeg($img,'',80);
            
imagedestroy($img);
            
ob_end_flush();
        }
    } 
lo otro que quiero saber es si es posible paginar las mismas de 5 en 5 y como se hara.

Salu2
__________________
Ing. Reynier Prez Mira
  #4 (permalink)  
Antiguo 15/02/2005, 08:32
O_O
 
Fecha de Ingreso: enero-2002
Ubicacin: Santiago - Chile
Mensajes: 34.417
Antigedad: 22 aos, 3 meses
Puntos: 129
Tienes que separar la lgica que obtiene el nombre de tu archivo de ese directorio que lees de la lgico que genera la imagen (con las cabeceras http (header ...) y tu uso de GD)

Debes tener un script que -slo- haga tu proceso con la imagen (con una sla) y otro script para otros procesos como obtener ese nombre del archivo. Sera algo tipo:

ver_imagen.php
Cdigo PHP:
<?
$url
=urldecode($_GET['imagen']);
            
header("Content-type: image/jpeg"); 
            
$img imagecreatefromjpeg($url); 
            
imagejpeg($img,'',80); 
            
imagedestroy($img);
nose.php
Cdigo PHP:
include("configuracion.inc.php"); 

// para que usas esto?
global $directorio,$dirthumb;
//
 
    
$path getcwd(); 
    
$pathtodir substr(substr($path,0,-1),0,strrpos($path,"\\")); 
    
$files = array(); 
    if (
$handle opendir($pathtodir.$dirthumb)) { 
        while (
false !== ($file readdir($handle))) { 
            if (
$file != "." && $file != "..") { 
                if (
eregi("\.jpe?g$"$file) || eregi("\.gif$"$file) || eregi("\.png$"$file)){ 
                    
$files[] = $file
                } 
            } 
        } 
        
closedir($handle); 
    } 
    foreach (
$files as $image) { 
        if(
file_exists($pathtodir.$dirthumb.$image)){ 
         echo 
"<img src=\"ver_imagen?imagen=".urlencode($pathtodir.$dirthumb.$image)."\">";  
         
        } 
    } 
Con el tag de imagen HTML .. llamas a tu ver_imagen.php pasandole el parmetro de tu ruta de imagen que ha de procesar tu script que usa GD.

En una pgina HTML cuando la generas .. aunque no lo sepas o uses, al "navegador" le ests diciendo que tipo de datos le ests enviando .. HTML, texto plano .. o "binarios" de cierto tipo MIME que usas en (caso de imagenes) en tag <img> HTML .. Por eso usas esas cabceras de "content-type" (HTTP) para indicar "aqu va dato binario de tal tipo" .. He de hay que tengas que tenerlo "aparte" y llamar de forma nica cuando lo requieras ... Al final generas HTML en tu caso.

Sobre "paginar" .. recuerda que obtienes un array cada vez que lees tu directorio .. eso es lo que puedes y debes usar para paginar: los indices de tu array que generas para saber que rango haz de presentar. (unando un for() en lugar de foreach() para irte moviendo el puntero (indice) del array que recorres y que ya tienes en $files)


Un saludo,
  #5 (permalink)  
Antiguo 15/02/2005, 09:21
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicacin: Por ah en algn sitio
Mensajes: 1.844
Antigedad: 21 aos, 4 meses
Puntos: 1
Pues ...

Perfecto Cluster, que fuera de mi sin vos. Te aseguro que eres mi profe virtual. Bueno lo de la paginacion se me complica un poco pero lo revisare y luego te digo. Esto:
Cdigo PHP:
include("configuracion.inc.php");
global 
$directorio,$dirthumb
el problema es que esas variables las tengo declaradas en el fichero config.inc.php, pero ahora me surge la duda de si es necesario declararlas o no?

Que me dices ?

Salu2
__________________
Ing. Reynier Prez Mira
  #6 (permalink)  
Antiguo 15/02/2005, 10:41
O_O
 
Fecha de Ingreso: enero-2002
Ubicacin: Santiago - Chile
Mensajes: 34.417
Antigedad: 22 aos, 3 meses
Puntos: 129
Pues no .. no es necesario (eso de "global" as se usaba en PHP 3 o primeras versiones de PHP 4 si mal no recuerdo .. ahora no es necesario con las ltimas versiones de PHP 4 o desde hace ya unas cuantas versiones otras).

Unsaludo,
  #7 (permalink)  
Antiguo 15/02/2005, 14:47
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicacin: Por ah en algn sitio
Mensajes: 1.844
Antigedad: 21 aos, 4 meses
Puntos: 1
Paginacion

Pues mira Cluster, me he puesto a realizar lo del pagina pero jams y nunca que me sale. Este es el cdigo:
Cdigo PHP:
function Mostrar($pagina){
    global 
$directorio$dirthumb$columnas$filas;
    
$inc 0;
    
$path getcwd();
    
$pathtodir substr(substr($path,0,-1),0,strrpos($path,"\\"));
    
$files = array();
    echo 
"<table width=\"100%\" border=\"0\" cellspacing=\"1\" cellpadding=\"0\">";
    if(
$handle opendir($pathtodir.$dirthumb)){
        while(
false !== ($file readdir($handle))){
            if (
$file != "." && $file != ".."){
                if (
eregi("\.jpe?g$"$file)){
                    
$files[] = $file;
                }
            }
        }
        
closedir($handle);
    }
    
$cantidad_elementos count($files);
    foreach(
$files as $image){
        
$resto $inc $columnas;
        if(
$resto == 0){
            echo 
"<tr>";
        }
        if(
file_exists($pathtodir.$dirthumb.$image)){
            echo 
"<td>";
            echo 
"<img src=\"createthumbs.php?imagen=".urlencode($pathtodir.$dirthumb.$image)."\">";
            echo 
"</td>";
        }
        
$inc++;
        if(
$resto == 0){
            echo 
"</tr>";
        }
        if (
$resto <> 0) {
            
$ajust $columnas $resto;
            for (
$j 0$j $ajust$j++) {
                echo 
"<td>&nbsp;</td>";
            }
            echo 
"</tr>";
        }
    }
    echo 
"</table>";
    echo 
"<table border=\"0\" width=\"100%\">"
    
."<tr>";
    if(
$pagina){
        echo 
"<td align='center'><a href='mostrar.php?m=v&pagina=".($pagina-1)."'>< Anterior</a></td>";
    }
    if(((
$pagina+1)*$filas*$columnas) < $cantidad_elementos){
        echo 
"<td align='center'><a href='mostrar.php?m=v&pagina=".($pagina+1)."'>Siguiente ></a></td>";
    }
    echo 
"</tr></table>";
    echo 
$cantidad_elementos." :: ".($pagina+1)*$filas*$columnas;

pero solo me pone una columna con todas las imagenes que tengo en el dir. Y lo que quiero que haga es que me haga una tabla de 2 filas por 3 columnas que son las valores de las variables globales $filas y $columnas. Ahora cuando doy a siguiente toma bien los valores pero me muestra las mismas imagenes que la vez anterior. Alguna sugerencia al respecto ???

Salu2
__________________
Ing. Reynier Prez Mira
Atencin: Ests leyendo un tema que no tiene actividad desde hace ms 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 07:30.