No logre entender porque usabas el for y crear la imagen pixel por pixel.. yo utilizo base64 para mostrar o guardar en archivos o en BD las imagenes.. este es solo una muestra de codigo.. y funciona correctamente.. se puede mejorar mucho y usarse con muchos fines.. espero que te sirva..
Código PHP:
$imagen = 'images/validated.gif';
$img_binaria = img_a_base64($imagen);
imagen_show($img_binaria,'gif');
function img_a_base64($img) {
$archivo = fopen($img, 'rb');
$tamanio = filesize($img);
$cont = fread($archivo, $tamanio);
fclose($archivo);
$output = base64_encode($cont);
return $output;
}
function imagen_show($bin_img,$mime) {
header('Content-type: image/'.$mime);
header('Content-length: '.strlen($bin_img));
echo base64_decode($bin_img);
}