entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

3votos

Crear imagen a partir de datos binarios

Muy buenas, tengo una base de datos ODBC, de un software que se llama TECDOC, instalada en local, de la cual quiero sacar los datos de la base de datos para migrarlos a mySQL y crear una tienda online, pero estoy teniendo bastantes problemas a la hora de migrar estos datos, uno de ellos y el que mas dolor de cabeza me da es este:

De una tabla de imagenes de articulos, el campo imagen viene en binario o blob (no se cual exactamente):

ÿØÿàJFIFKKÿá ExifMM*bj(1r2Ž‡i¤Ðq°'q°'Adobe Photoshop CS2 Windows2012:02:03 10:19:26  Z Y&(.    ZHHÿØÿàJFIFHHÿíAdobe_CMÿîAdobed€ÿÛ„          ÿÀYZ"ÿÝÿÄ?   3!1AQa"q2‘¡±B#$RÁb34r‚ÑC%’Sðáñcs5¢²ƒ&D“TdE£t6ÒUâeò³„ÃÓuãóF'”¤…´•ÄÔäô¥µÅÕåõVfv†–¦¶ÆÖæö7GWgw‡—§·Ç×ç÷5!1AQaq"2‘¡±B#ÁRÑð3$bár‚’CScs4ñ%¢²ƒ&5ÂÒD“T£dEU6teâò³„ÃÓuãóF”¤…´•ÄÔäô¥µÅÕåõVfv†–¦¶ÆÖæö'7GWgw‡—§·ÇÿÚ?ëÒI%Å»*I$’R’I$”¤’I%)$’IJI$’SÿÐëÒIŠCåï!•3W¸è .6”ä#dºòˆ$è ë}†$§É885úC*¼vø9ÀgWê]Zç`}\`ª†¶ç¼iÿ[ÿ_QPÈÅú¡ÑÞlê׿¬uÏl—Áó÷loývÕ¿Êü¯|™Lëí@\¿ÂýÏðÜì¿‘¿ló’ùÁýæÍÿ\¾¬TKiõòˆÿG[ˆûݵTמ™Û§æã°z­oøïlé}&Œv¢Í¥¬ÿ«TŸþ2úáv´cG„?ÿJ+òøFôòÀÿ{ ‰ÿ›Î̝rýuYõß¡½Û^ëqÉÿKY½«W©aå³~5̹¾,p?x\“¾½U”6õ.™MÍ<–A?u­wýZ8Vº£Å'!ý/?–°’Ù>»Ýÿ[µfs? Ç2Å›—ç7‚?ßöø2ã‹g73´á“ú§õSúqz$÷ s]¨2r8ýw©tœ¦áuæÃ\b¬æ}ÿºªnm­DÄéÁ¼W1ÊäÀGJ$<‘þ¤›˜³G%Õ‰š2ÒQH’I*ì¯ÿÑìœ9:*=~˲ó1¾­â;`´z™vÌÇý£üýÖY-Û¾¹õcgÓemþ¯±a|ûÙêåŠP¿ÞôÆ'þoŸ$ûxö•KËùEÒf7LÉÁ·¤ôü§cWŠvd4xÐïcÞæþç®r΍õ¬FfÝ›{±ì±Õ5òu{>˜öµC¥Û×CúÉéÍ Öo·íâCÿ?èad½ö~Àè¢ ÓaÍ»hÑ/Ü6úŸÉ]˜HÄe4e©;ž9e—¹þ+›9    x€Õ=3à.¾Nÿ=C2¼,gä]}³°XƒqÕ¦}^ú‹Õ›sð(µãþ…ïx÷y{ü–—J?X››=JŒ ñƒîÆÛênl~rÅÿÛÔ¤rär‡™æOµ–pË/Õˆ|¹8Çë%Ãú<,¸±Ž8DÂ>®-ãÃò°ê#ênR£¦Y‰gÚ[email protected]çë1¹Ûÿ’Ÿ?êÿÕ¾Ÿ‰n]¸e̤Kƒ\âî{{•­.Ýõ¿¥‘Ì3þ©Ë[ë,~ÄÏŸôNYyòæãä«>ndDääúåöý?à¶aVoÕÂñ“Ãé»Äáä}hèYX£Ü+ïÇ×7wÑú>ïÞWþ¯uΟ–N6 O¡˜­Çþé1ú«ê÷YÌÂéͦ®™fcŽpµƒMvû8Bú ç;®e;nÀêÞK<%ßGû*^g‘ÅД^9þôg..JXɡ÷ÖãÏ#ÍŒâŐdõ%»£Ìá9"8tœOOˆhääô~‰M½E•Ûf?Qvû®§ôŒ—¦ïwèÚýëž~gÔkðkÁu¹ÓUŽ¹’!Ïú~àÇûU§cõŸªå↩Ь$º“«ëŸAÝ#ê¯\›zVXÀÈwÒƳFÏü[Ïþ{zÜÄ1D’˘ã$Í`—ôŽcòaž8z\ù™HŒ†‡A_Þöåú|Iúxú•…™Vf?Q»Ô¨Ë[c´éæš‚¬zOÕ9Ϋ«Ù^ò\@° N¿¸ÕO#ê/^«Z›VC{9ŽÁÁT?T¾±L}ŒÿœßïSËH™Ãâr/LéLe9Ìfî³í€Ó¸ý.vª_Wú>ÖåQ•ö¿µ ¡à‰%ðæ¹û•Q‰Õ¾±½‡-‡¤°‚Ìa£ì‰]^Xµ6ºÚÖ ¬`á vY<Ìå†9"sqææeÅÌB<Œbc<±ÿ+Åóû^†Þ(Œ†'‚¡ŒV9âÇ÷¼Ø   $’Ím¿ÿÓëÒI%Å»,›c›ÁÓÁfõ«©ûñƒ.?ájö;þŠÐIK‹˜Ëˆñbœ {Äð¬ž(LT¢%æó¿óG'þ¡Õò)of»ÜcÐ~³qûqÑýS+£IYÿJs'æ0™ï

Este código es uno de los campos de imagen de un ariculo, como puedo en php transformar datos binario en jpg, e visto una solucion como:

file_put_contents('tecdocimages/foto.jpg', $r->GRD_GRAPHIC);

Pero esto de aquí arriba me crea imágenes jpg que no se pueden abrir, alguien se ha peleado antes con algo parecido que me pueda guiar?

bl4z3r comentado Ene 26, 2016

  1. ¿Esta seguro que el formato es JPG? Puede ser que sea otro formato como PNG o GIF.
  2. ¿No tiene las función que transformaba la imagen a a binario de la anterior aplicacion?

cobasESP comentado Ene 26, 2016

1.si, porque en la documentacion pone que las imagenes estan en ese formato.

2.esta base de datos aun no es muy conocida y no tiene estos métodos de exportacion, estoy buscando alguna aplicación ajena que lo haga, pero si no, me tocara comérmelo a mi.

2 Respuestas

2votos

Leonardo-Tadei Puntos216110

Hola @cobasESP,

fijate que en la tabla en dónde se guardan las imágenes actualmente, tenés que tener un campo que indique de qué tipo es la imagen: JPEG, GIF, PNG, etc. Si no tenés ese campo, entonces la aplicación debería permitir solo cargar 1 tipo de imagen, ya que si no sabés el tipo no tenés toda la información para saber cómo tratarla.

Luego, las pruebas que hagas tienen que ser siempre leyendo el BLOB. Justamente un dato binario no puede representarse completamente como texto, así que por ejemplo no serviría copiar el tezto de tu pregunta y tratar de convertirlo en una imagen.

Dicho todo esto, podés ahorrarte el pasar cada imagen a un archivo, sino que bastaria con pasar los datos de la DB actual a MySQL, y luego mostrar directamente el archivo en la página. Te dejo un par de enlaces que lo explican, si bien hay que modernizarlos para usar PDO o al menos MySQLi:
https://www.buayacorp.com/archivos/mostrar-una-imagen-desde-blob-mysql-usando-php/
http://www.rinconastur.com/phpsentimental/php86.php

Por último tené especial cuidado en que el campo de origen de la imagen y el de destino sean BLOB o BINARY. Si estuviera el dato guardado en al gún campo de tipo texto grande, tendrías que respetar el collation con mucho cuidado para no romper la imagen al pasarla de una DB a otra. También fijate que no se te esté recortando el campo al tratarlo: la imagen que ponés parece un JPEG válido, pero sería muy pequeño porque ocupa solo 1.6Kb.

Saludos cordiales!

1voto

aynek Puntos270

prueba con esto

$result = imagecreatefromstring($string);
imagejpeg($result, 'test.jpg');

Por favor, accede o regístrate para responder a esta pregunta.

¿Conoces alguien que puede responder?
¡Comparte esta pregunta!


Otras Preguntas y Respuestas


Actividad Reciente

...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta