|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Aug 2004
Città: Milano
Messaggi: 1310
|
[PHP] Problema con "imagejpeg"
Ho un problema con la funzione imagejpeg.
Da quel che ho capito dovrebbe creare un immagine jpeg, il fatto è che a me crea un immagine .bmp, è possibile? Questo è il codice: captcha.php Codice:
imagejpeg($immagine, NULL, 90); Codice:
<img src="captcha.php" id="imm_verifica" border="1" width="180" height="50" /> |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Oct 2009
Città: Varese
Messaggi: 307
|
ma lol!!
sei sicuro che non è semplicemente una jpg con estensione BMP? |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Apr 2008
Città: Varese
Messaggi: 406
|
Esatto... cosa più probabile!
__________________
IT Developer at Hardware Upgrade S.r.l. self.love(this.me()); |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Aug 2004
Città: Milano
Messaggi: 1310
|
A ma questa cosa viene fatta in automatico? Cioè non posso visualizzare un file .jpg?
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Oct 2009
Città: Varese
Messaggi: 307
|
puoi postare qui sul forum una di quelle immagini?
-----EDIT----- ho appena provato quella funzione copia/incollando il codice di esempio sulla pagina ufficiale Codice PHP:
Ultima modifica di kurts : 09-11-2009 alle 19:42. |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Aug 2004
Città: Milano
Messaggi: 1310
|
Ma infatti io faccio img scr del file pc, però quando salvo l'immagine con il tato destro mi salva questo file: "untitled.bmp"
Facendo l'img scr del file php che crea l'immagine jpg non dovrebbe visualizzarmi una jpg? |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Oct 2009
Città: Varese
Messaggi: 307
|
non so che dire...
ti sei ricordato Codice PHP:
|
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Aug 2004
Città: Milano
Messaggi: 1310
|
Si... non so più dove guardare...
![]() |
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Apr 2008
Città: Varese
Messaggi: 406
|
Ma è solo un problema di estensione?
Il file che genera è un jpeg con estensione bmp?
__________________
IT Developer at Hardware Upgrade S.r.l. self.love(this.me()); |
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Aug 2004
Città: Milano
Messaggi: 1310
|
Come faccio a capire se è un jpg con estensione bmp o è un vero e proprio bmp?
|
![]() |
![]() |
![]() |
#11 | |
Senior Member
Iscritto dal: Apr 2008
Città: Varese
Messaggi: 406
|
Quote:
![]()
__________________
IT Developer at Hardware Upgrade S.r.l. self.love(this.me()); |
|
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Apr 2008
Città: Varese
Messaggi: 406
|
mi correggo, mi pare che in PHP esista una funzione per analizzare un tipo di dato
![]()
__________________
IT Developer at Hardware Upgrade S.r.l. self.love(this.me()); |
![]() |
![]() |
![]() |
#13 |
Bannato
Iscritto dal: Nov 2002
Città: Roma
Messaggi: 810
|
Per conoscere il formato del contenuto di un file puoi usare il comando "file" in questo modo: file nome_del_file
La funzione imagejpg con NULL come secondo parametro invia il bytecode della JPEG sullo standard output, quindi non è quella funzione che sta creando il file che dici ma qualcos'altro. Se l'immagine è all'interno di un tag <img> e clicchi sulle proprietà dell'immagine, è possibile che il browser dica BMP anche se è JPEG perché ingannato dall'estensione PHP dell'immagine. |
![]() |
![]() |
![]() |
#14 | |
Senior Member
Iscritto dal: Apr 2008
Città: Varese
Messaggi: 406
|
Quote:
__________________
IT Developer at Hardware Upgrade S.r.l. self.love(this.me()); |
|
![]() |
![]() |
![]() |
#15 |
Bannato
Iscritto dal: Nov 2002
Città: Roma
Messaggi: 810
|
|
![]() |
![]() |
![]() |
#16 |
Senior Member
Iscritto dal: Aug 2004
Città: Milano
Messaggi: 1310
|
Ok, ma è normale che una jpg qualità 90 come questa occupi 26Kb?
![]() |
![]() |
![]() |
![]() |
#17 |
Senior Member
Iscritto dal: Oct 2009
Città: Varese
Messaggi: 307
|
beh, ma in fin dei conti chissene della qualità, secondo me 40 andrebbe più che bene per l'uso che si fa dell'immagine generata, non si ha bisogno di una qualità eccelsa in questi casi
|
![]() |
![]() |
![]() |
#18 |
Senior Member
Iscritto dal: Aug 2004
Città: Milano
Messaggi: 1310
|
Comunque provandola ad aprire con programmi di fotoritocco ho notato che quella è a tutti gli effetti una Bitmap, infatti se così non fosse i 26Kb non si spiegherebbero.
Ho provato a convertire la stessa immagine a qualità 100, quindi massima ed occupa meno di 4Kb, a pari qualità occupa 2,4Kb. Quindi un decimo. Non capisco com'è possibile che nel file php creo un immagine jpeg qualità 90, nel file html faccio l'img scr di quel file e mi viene visualizzato come un bmp che occupa 10 volte tanto. Anche mettendo qualita 40 o meno, il file oltre a vedersi male occupa tanto perchè viene comunque convertito in bmp. |
![]() |
![]() |
![]() |
#19 |
Senior Member
Iscritto dal: Aug 2004
Città: Milano
Messaggi: 1310
|
questo è il codice completo del file php di cui faccio l'img scr:
Codice:
<?php header("Content-type: image/jpeg"); function sfondi() { $dir = opendir("sfondi/"); $counter =0; while (($file = readdir($dir)) == true ) { if ($counter == 1) { $counter = ''; } else { if ($file !== '.' AND $file !== '..') { $sfondi[] = "sfondi/$file"; $counter = $counter+1; } } } $elemarray=$counter-1; $sfondo = $sfondi[mt_rand(0,$elemarray)]; return $sfondo; } $immagine = imagecreatefromjpeg(sfondi()); $nero = imagecolorallocate($immagine, 0, 0, 0); $colore = array("$nero"); function cerca_carattere() { $carattere = mt_rand(49,122); $charesclusi = array(58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,108,111); if (in_array($carattere,$charesclusi)) { return cerca_carattere(); } else { return $carattere; } } function fonts() { $dir = opendir("fonts/"); $counter = 0; while (($file = readdir($dir)) == true ) { if ($file !== '.' AND $file !== '..') { $font[] = "fonts/$file"; $counter = $counter+1; } } $elemarray=$counter-1; $fonts = $font[mt_rand(0,$elemarray)]; return $fonts; } $x = 11; $y= 20; for ($c=0; $c<=3; $c++) { $char = chr(cerca_carattere()); imagettftext($immagine, mt_rand(25,35), mt_rand(28,-28), rand($x,$y), 40, $colore[0], fonts(), $char); $x=($y+27); $y=($x+13); $caratteri[] = $char; } imagejpeg($immagine, NULL, 90); imagedestroy($immagine); session_start(); $codice = $caratteri[0].$caratteri[1].$caratteri[2].$caratteri[3]; $_SESSION['codice'] = $codice; ?> |
![]() |
![]() |
![]() |
#20 |
Senior Member
Iscritto dal: Apr 2008
Città: Varese
Messaggi: 406
|
Scusate... ma ora che ci penso... la funzione corretta non sarebbe:
Codice PHP:
![]() Un esempio: Codice PHP:
__________________
IT Developer at Hardware Upgrade S.r.l. self.love(this.me()); |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:38.