Il "Content-type: image/jpeg" lo devi per forza mandare, non puoi farne a meno. Altrimenti il browser non saprebbe come interpretare lo stream di dati.
Se vuoi "nascondere" il fatto che per avere l'immagine devi chiamare uno script php, allora potresti usare una "rewrite rule" per far sì che una richiesta come captcha.jpeg sul server sia tradotta in captcha-image.php
Codice PHP:
<?php
//echo phpinfo();
//http://forum.html.it/forum/showthread.php?s=&threadid=1145418&highlight=captcha
//Captca-image
session_start(); // <---- questa non la devi commentare.. :D
if (empty($_SESSION['rand_code'])){
$str = "";
$length = 0;
$caratteri = "abcdefghijkmnpqrstuvwxyz123456789"; /* Caratteri che appaiono come immagine */
/*
for ($i = 0; $i < 5; $i++){ // il 5 indica il numero di caratteri-immagine che appaiono
$str .= $caratteri{rand(0,34)}; // genera un numero casuale tra 0 e 32 per una stringa di lunghezza variabile da 3 a 5 cifre
}
*/
for ($i = 0; $i < 5; $i++){ // il 5 indica il numero di caratteri-immagine che appaiono
$str .= $caratteri{rand(0,32)}; // genera un numero casuale tra 0 e 32 per una stringa di lunghezza costante di 5 cifre
}
$_SESSION['rand_code'] = $str;
}
/*
$imgX = 60;//Sposta a dx i caratteri-immagine
$imgY = 18;//Sposta in alto i caratteri-immagine
$image = imagecreatetruecolor(60, 20);
$backgr_col = imagecolorallocate($image, 238,239,239);//Colore di sfondo
$border_col = imagecolorallocate($image, 208,208,20);//Colore del bordo
$text_col = imagecolorallocate($image, 46,60,31);//Colore dei caratteri-immagine
$font_size = 14;//Dimensione dei caratteri-immagine
imagefilledrectangle($image, 0, 0, 60, 20, $backgr_col);//Cambiando i 4 valori appare un'ombra nera e si può creare un'effetto rilievo o incassato del rettangolo
imagerectangle($image, 0, 0, 59, 19, $border_col);// Sposta il bordino colorato del rettangolo
*/
$imgX = 70;//Sposta a dx i caratteri-immagine
$imgY = 30;//Sposta in alto i caratteri-immagine
$image =imagecreatefromgif("captcha.gif");
//$text_col = imagecolorallocate($image, 33,33,cc);//Colore dei caratteri-immagine
$font = "georgia.ttf";
$font_size = 16;//Dimensione dei caratteri-immagine
$angle = 0;//Ruota obliqui i caratteri-immagine
$box = imagettfbbox($font_size,$angle,$font,$_SESSION['rand_code']);
$x = (int)($imgX - $box[4]) / 2;//Sposta a sx i caratteri-immagine
$y = (int)($imgY - $box[5]) / 2;//Sposta in alto i caratteri-immagine
imagettftext($image,$font_size,$angle,$x,$y,$text_col,$font,$_SESSION['rand_code']);
//header("Content-type: image/jpeg");
//imagejpeg($image);
header("Content-type: image/gif");
imagegif($image);
imagedestroy ($image);
//Fine Captca-image
?>