Foros del Web » Programando para Internet » PHP »

¿Mostrar Imagen en binario?

Estas en el tema de ¿Mostrar Imagen en binario? en el foro de PHP en Foros del Web. Buenas chicos... una duda... Existe alguna forma de cargar una imagen en php y mostrarla en modo binario (ya sea $%&345·$^%¨*·$¨*Ç%*·$%... o en modo 1001011110101...) ...
  #1 (permalink)  
Antiguo 15/08/2006, 14:10
 
Fecha de Ingreso: agosto-2006
Mensajes: 22
Antigüedad: 17 años, 8 meses
Puntos: 0
¿Mostrar Imagen en binario?

Buenas chicos... una duda...

Existe alguna forma de cargar una imagen en php y mostrarla en modo binario (ya sea $%&345·$^%¨*·$¨*Ç%*·$%... o en modo 1001011110101...) sin tener que recurrir a usar mysql???

Es decir, cargar una imagen con fopen... y hacer un echo con la informacion y que se vean todos los caracteres.

¿Eso se podria? Mestoy volviendo loco montrando funciones. A lo mas que llego es a ver 4 o 5 caracteres.

Un saludo
  #2 (permalink)  
Antiguo 15/08/2006, 14:15
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Lo que pasa es que dentro de tus caracteres de la imagen esta el "null" o \0 si le das en view source podras ver todo el code.

de forma alternativa podrias enviar la cabecera:
header( "Content-type: text/plain" );
  #3 (permalink)  
Antiguo 15/08/2006, 14:32
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 10 meses
Puntos: 834
No estoy seguro si es lo que estás buscando:
Código PHP:
<?php
echo chunk_split (base64_encode(file_get_contents("yo.jpg")));  
?>
  #4 (permalink)  
Antiguo 15/08/2006, 14:43
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por ToniJ Ver Mensaje
Buenas chicos... una duda...

Existe alguna forma de cargar una imagen en php y mostrarla en modo binario (ya sea $%&345·$^%¨*·$¨*Ç%*·$%... o en modo 1001011110101...) sin tener que recurrir a usar mysql???

Es decir, cargar una imagen con fopen... y hacer un echo con la informacion y que se vean todos los caracteres.

¿Eso se podria? Mestoy volviendo loco montrando funciones. A lo mas que llego es a ver 4 o 5 caracteres.

Un saludo
Uses "Mysql" o no lo uses como fuente de tus datos "binarios" ... tan sòlo debes definir las cabeceras HTTP adecuadas para indicar a tu navegador que datos vas a enviar binarios (de que "MIME" tipo) y luego si dices que tienes tu archivo fisicamente en tal sitio y quieren leerlo + entregarlo al buffer de salida de PHP para eso tienes funciones directas.

Minimo sería:

genera_imagen.php
Código PHP:
<?
header 
("Content-type: image/jpeg");
readfile("ruta/archivo.jpg");
?>
De ahí puedes completar el código con más cabeceras HTTP ...

IMPORTANTE:
El código debes llamarlo en -otro script/página HTML- bajo un tag de imagen:


Código PHP:
<img src="genera_imagen.php"
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 15/08/2006, 15:40
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 10 meses
Puntos: 834
Dos cosillas:
1)Según entendí, no quiere mostrar la imagen sino la secuencia de caracteres
2) Esto no es del todo cierto (lo digo porque me parece una opción interesante hacerlo todo en la misma página):
Cita:
IMPORTANTE:
El código debes llamarlo en -otro script/página HTML- bajo un tag de imagen:
Por ejemplo, esto funciona perfectamente:
Código PHP:
<?php 
if(isset($_GET['imagen'])){
header ("Content-type: image/jpeg"); 
readfile("ruta/img01.jpg"); exit;
}
?>
<img src="?imagen">

Última edición por Panino5001; 15/08/2006 a las 16:02
  #6 (permalink)  
Antiguo 15/08/2006, 18:20
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por Panino5001 Ver Mensaje
Dos cosillas:
1)Según entendí, no quiere mostrar la imagen sino la secuencia de caracteres
2) Esto no es del todo cierto (lo digo porque me parece una opción interesante hacerlo todo en la misma página):

Por ejemplo, esto funciona perfectamente:
Código PHP:
<?php 
if(isset($_GET['imagen'])){
header ("Content-type: image/jpeg"); 
readfile("ruta/img01.jpg"); exit;
}
?>
<img src="?imagen">
1) Si es así ... la soluciòn serí lo que plantea GatorV o ni eso .. por qué por defecto PHP y tu servidor HTTP definen como "content-type" por defecto: HTML ...

Por ende .. tan sòlo con un "readfile()" que lee el archivo y lo entrega al buffer de salida de PHP sobraría. (De hecho ese es uno de los "efectos" que sucede cuando nos equivocamos con el "content-type" adecuado y vemos el "binario" del archivo que pretendemos enviar ..)

En resumen ..

Código PHP:
<html>
......
<?
readfile
("ruta/archivo.tal");
?>
</html>
2) .. El protocolo HTTP y como trabaja un navegador bajo HTML asì lo define.

No puedes "mezclar" varios tipos de contenido: texto/plao o HTML y "binario" (un image/jpeg por ejemlo) en el la misma pàgina .. para eso en HTML usas el tag HTML para tal fin .. con su <img src=....>

Con PHP tu "compones" la salida que generas y entregas al navegador (o cliente mejor dicho) .. Por eso no puedes mezclar y por ende ha de ser un script -a parte- para que puedas llamarlo en el "src" (source) del tag "img" de HTML.

Sobre tu ejemplo:
Claro que funciona perfectamente .. haces un exit; (terminas la ejecuciòn de tu script) .. NUNCA envias ese HTML (<img src="....>) al navegador. Quita tu exit; o mejor pon HTML por delante de ese código PHP y comprueba tu mismo los efectos.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 16/08/2006, 10:46
 
Fecha de Ingreso: agosto-2006
Mensajes: 22
Antigüedad: 17 años, 8 meses
Puntos: 0
Bien, entonces, en mi caso, yo lo que quiero es guardar ese resultado binario en una variable... eso cambiaria la cosa no? porque en lugar de mostrar la salia del resultado directamente, lo que quiero es que esa salia la guarde en una variable, para poder trabajarla.
  #8 (permalink)  
Antiguo 16/08/2006, 11:00
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 10 meses
Puntos: 834
Podés guardar la imagen como string de esta manera:
Código PHP:
<?php 
$variable
=base64_encode(file_get_contents("imagen.jpg"));   
?>
Luego, para mostrarla, deberías hacer lo siguiente:
Código PHP:
<?php
if(isset($_GET['imagen'])){
header("Content-type: image/jpeg");
$variable="lalistdecaracteresobtenidaantes";
echo 
base64_decode($variable);exit;
}
?>
<img src="?imagen">
  #9 (permalink)  
Antiguo 16/08/2006, 11:00
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Para trabajar te conviene mucho mas usar las funciones internas de PHP para poder trabajar sobre la imagen, pero si te quieres ir lo mas dificil puedes usar fopen, fwrite, fread, fclose etc. para poder manipular la imagen.
  #10 (permalink)  
Antiguo 16/08/2006, 11:46
 
Fecha de Ingreso: agosto-2006
Mensajes: 22
Antigüedad: 17 años, 8 meses
Puntos: 0
oka amigos, y la pregunta del millon jajajaa y si en lugar de ser una imagen jpg, gif o bmp fuera un sonido???
  #11 (permalink)  
Antiguo 16/08/2006, 12:59
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Pues es lo mismo usas fopen y usas "rb" para abrir con binario ;)
  #12 (permalink)  
Antiguo 16/08/2006, 14:56
 
Fecha de Ingreso: agosto-2006
Mensajes: 22
Antigüedad: 17 años, 8 meses
Puntos: 0
Okis okis... entonces seria algo como esto?

<?php
$archivo=fopen("directorio\archivo.mp3","rb");
$variable=base64_encode(file_get_contents($archivo ));
?>

o me ekivoco???

saludos y gracias a todos los que colaborais ;)
  #13 (permalink)  
Antiguo 16/08/2006, 15:42
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 10 meses
Puntos: 834
No, o usás fopen o usás file_get_contents, fijate en el manual:
http://es2.php.net/manual/es/function.fopen.php
http://es2.php.net/manual/es/functio...t-contents.php
  #14 (permalink)  
Antiguo 16/08/2006, 15:52
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
y tampoco, o sea depende de lo que quieras realizar, pero por decir cambiar un offset por algo:

Código PHP:
$fp fopen"directorio/archivo.mp3""rb" );
fseek$fp1000SEEK_SET ); // saltar a 1000 bytes
fwrite$fp$algo );
fclose$fp ); 
deberias de postear que es lo que quieres hacer para recibir una mejor ayuda.
  #15 (permalink)  
Antiguo 16/08/2006, 15:59
Avatar de fer10  
Fecha de Ingreso: octubre-2005
Ubicación: Guadalajara - Mexico
Mensajes: 905
Antigüedad: 18 años, 6 meses
Puntos: 4
hola, a mi me paso lo mismo una vez trate de subir mp3 a la base de datos, si lo subia bien y se guardaba en formato binario pero no lo reproducia

usaba este codigo para porcesarla en binario
Cita:
$f1= fopen($file_input_temporal,"rb");
$sound = fread($f1,$file_input_size);
$sound=addslashes($sound);
fclose($f1);
$file_input_temporal = ubicion temporal del upload
$file_input_size = tama;o del archivo.

$sound -> lo metia a directo a la base de datos en un campo de formato longbolb
como comento si me subia infromacion a la bd de y me mandaba como tipo de archivo audio/mpeg.

hasta ahy todo bien aprentemente, cuando intentava reproducirlo en un php mandandole el header

header("Content-type: audio/mpeg"); <-- que es el formato que me arrojo cuando subi la imagen..

no me lo reproducia..

no se si el addslashes elimino algo ???

o donde esta el probelma ?
__________________
Saludos
FT.
www.fernando.com.mx
  #16 (permalink)  
Antiguo 16/08/2006, 20:19
 
Fecha de Ingreso: mayo-2005
Mensajes: 83
Antigüedad: 18 años, 11 meses
Puntos: 0
una duda que tengo, ke utilidad (ke interes ) tiene enseñar imagenes en binario? (simplemente es una duda)
  #17 (permalink)  
Antiguo 17/08/2006, 08:53
 
Fecha de Ingreso: agosto-2006
Mensajes: 22
Antigüedad: 17 años, 8 meses
Puntos: 0
yo no quiero enseñarlas, solo guardarlas en binario.
GatorV, solo quiero eso, poder guardar imagenes, sonidos, zip, etc, osea, archivos en binario, no es una BD sino en una variable, para poder modificar algunos factores posteriormente.
  #18 (permalink)  
Antiguo 17/08/2006, 08:56
Avatar de fer10  
Fecha de Ingreso: octubre-2005
Ubicación: Guadalajara - Mexico
Mensajes: 905
Antigüedad: 18 años, 6 meses
Puntos: 4
las queiren guardar, pero no mostrar ??? entocnes para que las guardan ?

yo tengo probelmas para MOSTRAR un mp3 como hacerlo ?
__________________
Saludos
FT.
www.fernando.com.mx
  #19 (permalink)  
Antiguo 17/08/2006, 09:52
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
@fer10 te recomiendo hagas un tema aparte para recibir ayuda.

@ToniJ
Pues usa ese code para tener el stream abierto hacia tu archivo, aunque seria una perdida de recursos tenerlo abierto sin modificarlo pero alla tu:
Código PHP:
$fp fopen$path_al_archivo'rb' ); 
Ya en tu variable $fp tienes el resource (o puntero) al archivo para poderlo modificar, cuando tu lo quieras hacer.
  #20 (permalink)  
Antiguo 18/08/2006, 14:54
 
Fecha de Ingreso: agosto-2006
Mensajes: 22
Antigüedad: 17 años, 8 meses
Puntos: 0
Muchas gracias. De todos modos el puntero iva a durar poco abierto iva a ser una modificacion directa al archivo, pero no quiero mostrarlo, solo abrirlo en binario, modificarlo directamente mediante una funcion, guardarlo y lanzarlo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más 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 20:11.