Fagner 1 Denunciar post Postado Outubro 4, 2012 Bom dia, preciso exibir imagens que estão gravadas em um banco de dados Oracle onde a coluna tem formato LONG RAW, através do codigo que estou utilizando não estou conseguindo puxar a imagem. Segue codigo: $sql = "select FOTO from veiculos_fotos where cod_veiculo_foto = '115'"; $stid = ociparse($Exec->ConnOracle(),$sql); ociexecute($stid); while ( $row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_LOBS) ) { header("Content-type: image/jpg"); print "<img src='".$row['FOTO']."'>"; } A mensagem que retorna é que a imagem contém erros e não pode ser exibida. Obrigado desde já.. Att, Compartilhar este post Link para o post Compartilhar em outros sites
Tywin 7 Denunciar post Postado Outubro 4, 2012 Eu não sei como está codificada a imagem na tabela, você sabe como ela foi salva ? Compartilhar este post Link para o post Compartilhar em outros sites
Fagner 1 Denunciar post Postado Outubro 4, 2012 Eu não sei como está codificada a imagem na tabela, você sabe como ela foi salva ? Arquivo foi gravado em Hexadecimal. Att, Compartilhar este post Link para o post Compartilhar em outros sites
Tywin 7 Denunciar post Postado Outubro 4, 2012 print pack( 'H*', $row['FOTO']); Compartilhar este post Link para o post Compartilhar em outros sites
Fagner 1 Denunciar post Postado Outubro 4, 2012 Creio que o contato com a softhouse me passou a informação não muito correta.. a mensagem permaneceu a mesma então tirei o header() e apareceu... Warning: pack() [function.pack]: Type H: illegal hex digit ÿ in Compartilhar este post Link para o post Compartilhar em outros sites
Tywin 7 Denunciar post Postado Outubro 4, 2012 Acho que errei. Coloca UnPack() em vez de Pack(). O Header deve continuar. Além dessa função tem o Hex2Bin($row['Foto']) também... Se a imagem aparecer pela metade, vai no php.ini Procure as linhas mssql.textsize e mssql.textlimit e altere o número para 2147483647 em ambos. Compartilhar este post Link para o post Compartilhar em outros sites
Fagner 1 Denunciar post Postado Outubro 4, 2012 Tywin, nada heim... Alguma outra indicação? Att, Fagner Compartilhar este post Link para o post Compartilhar em outros sites
Tywin 7 Denunciar post Postado Outubro 4, 2012 Que erro está dando ? Essa imagem é JPG mesmo ? Você tem o código que faz o Upload dela para a tabela ? Compartilhar este post Link para o post Compartilhar em outros sites
Fagner 1 Denunciar post Postado Outubro 4, 2012 Que erro está dando ? Essa imagem é JPG mesmo ? Você tem o código que faz o Upload dela para a tabela ? Tywin em primeiro lugar muito obrigado pela atenção que está me dando.. Ai que está o grande problema, a imagem é upada via sistema de automação da empresa desenvolvido em Delphi. O formato é JPG segue anexo . Se precisar de alguma informação que ajude você a me auxiliar eu tento entrar em contato com a equipe que desenvolveu o software. Att, Compartilhar este post Link para o post Compartilhar em outros sites
Tywin 7 Denunciar post Postado Outubro 4, 2012 Dá um echo na variável da imagem sem o header e posta aqui o resultado. Compartilhar este post Link para o post Compartilhar em outros sites
Fagner 1 Denunciar post Postado Outubro 4, 2012 $sql = "select FOTO from veiculos_fotos where cod_veiculo_foto = '115'"; $stid = ociparse($Exec->ConnOracle(),$sql); ociexecute($stid); while ( $row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_LOBS) ) { echo pack('H*',$row['FOTO']); } resultado: Warning: pack() [function.pack]: Type H: illegal hex digit ÿ in /usr/local/apache2/htdocs/Flex/amfphp/services/teste.php on line 11 Warning: pack() [function.pack]: Type H: illegal hex digit Ø in /usr/local/apache2/htdocs/Flex/amfphp/services/teste.php on line 11 ... Att, Compartilhar este post Link para o post Compartilhar em outros sites
Tywin 7 Denunciar post Postado Outubro 4, 2012 Mas sem o Pack também. Só a variável mesmo. Compartilhar este post Link para o post Compartilhar em outros sites
Fagner 1 Denunciar post Postado Outubro 4, 2012 Mas sem o Pack também. Só a variável mesmo. http://www.npdcometa.com.br/teste.php ÿØÿàJFIF,,ÿÛC ÿÛC ÿÀŽ–"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚâãäåæçèéêòóôõö÷øùúÿÚ?ýS¢Š(¢Š(¢¹ÿxãKðÊ•¸›Í¹ÇðüÏøú~5É]j>'ñ=¬·Rφ4DRï<Ï°„X±ÁÆ;ü¢€;mcÅšNƒ‘{{RŸ(Ïÿ|Žk•“â}Ö§#G è—ØãÍ£êõ"¾\ø£ûq| ø+,¶¶üMñ 4Ö jþÔÇä#ýß0×Êà©ÿ<`¯iáH4ßél!;}²¿Š¢šWE(¶~¦\/¯¡yïoìôUœ–UÚ=sÎ?:óoüPøeáÿð•|jÑ„«÷cÔ£’QÿWfÿÇkñsÆÿümñ&s7Š¼Y¬ø‰ÜP½’T_÷Tœ(öWÖ_±üÖÃöðLÞ6ñ†»}¥è/pöÖVz^Åžr„‘¤u`«œ¨I$FUï°ùm¹õ}ÿímû0é$ù¿î¯dÃoatùüDýk>/Ûcö`¸}âÍ^Ø}ôÛ’?Hò¯ËŒ~_…Ÿ|Yá»ñ躜ö)sÀ2ª9UbB@ŽEqô¹™\¨ýšÒ?jÙ³Z˜.ñTÙÌz5å´öà~2Bƒõ¯]ð~µk⸌Þø›¤ønòí¯£¸Ú=³ãñ¿*{û2ê;›;‰mn";’h\£¡õr ÁÈB£Ç> ðÛ×ôs%¸87VÝ1ëÜ*ëô/é¾#‡}ÊÈÀe¢<:ýGõ¯Å‚¿ðQ¿‹ß e‚×QÕ¿á8З ú~¾ÆY6÷ ?úÀqÀÜYG÷kô+àOíðãö¢€OàÛæðŸŽ`_6mñÂHp9hÈá×ý¥ä¼£5I܇¬¨®+Â~8škÓ£k±}“VCµY†_韧µv´É (¢€ (¨/¯`Óm%¹¹‘a‚%ÜÎÝ Ü\EiÍ4‹H73¹ÀÜמßøÃUñÛéþ¡¶S‰up=oçô¬½_WoEwªj—©¡x3NVš{›‰jUFY™¹àWç?ímÿ¾ñJ]xá³xwÂ1†}nÇw¨‡Ë?z(ϯßnûFT¦ì4®}7ñóöÉøeû/I>—bâÄ$$Ik£È³“þ›IÈRðÏë· ×æ×ǯÚÛâWí|çÅãǤ݇§æ(½>@räyËzñÇv‘‹1,Ää’rM%Cw5QH(¢ŠE}%ð'öòøƒû>|'Õ¼áÈtù¢¹§²¿¼Œ¼š{8Ä›;[$²ÝÙÀùÒÂÂëU½†ÎÊÞ[»¹ÜG!w‘@ª9$ú Þñ/Ãx27ˆ<)èqbMKOšÝNzrê(7mô–øðóÅZü’Éwâ}"ýu;ù¤mòÝZÜ°ŽIXžO—?•õûI=«ÏqŠ÷_Ø’Heý¤|1¥^ÙEªéšÊ\é—šeÉ+Èå·Ÿ ð_aÏbí_~xÇþ û¥øÃÁ¾%ñÄUÓ¬|Ci£Ü¦“¡x>Ý,´Í&8ÖG‰Aá9.øÎHƧk‰»‘ÔR²í$b’‘AW´-{Qð¾±g«i×n§g*Íowk!ŽHœ†VƒTh ×ÿÙö©³ý¼ Þñ$X|QÑ`“®u(‡üµP:08Þ£¡!—‚BýgðÿÅRë6Òéú†SU²;%Và¸núö?ýzþ|~|@Ö¾øãFñg‡®ž¯¥\-ćU‡u`J‘Ü;×î„þ%éß|àÿ‹~lµXí–àäÇ'+$m„ú¨5iÜÊJǽÑQÛÏÕ¼sDÁâ‘C«àŒƒEQ+Ì5»æøƒ¯Kd—ßÃÚwï.®Ka[Nzv8ö×Cñ/_“HÐŵ±?m¾o"0¿x÷ˆüÀükáÏø(÷džø5ð¿NøKáë¯'Ä>#€Üë7œ4vd•)ŸúhÀ¯ûˆÀýêOA¥sçoÛÇöÓ—ãF±'€ürlþir÷@JÿjʇýcÓ Gȧ¯Þ<à/Ç4QY›%`¢Š(QE£áÏê~×luúm7U±”MmwnÛd‰ÇFSØ×ØŸ?੼/wo§|A·²ñ÷†ä";Ÿ>Ý"¼XÏk(üvu9é¸u¯Š€É®×Áº…áÿŠZf•ñ×PCŠí!ÕbÓ¦Xî"SÁ ²°Êç%q“‚ ¤ÏÜ/ þÏŸ|[}ᯉ~ðV쫦êzt&ÔÊ$+U$‚ ܽ:óöøa{ñŠ×áz©Öý½>xâ$k¢ÚÜè~ø¥¡ØꮢéÑ’š–•išR0#”¤Nȹ=r +ùi_|þÒ£P´ÿ‚ƒ|IÖ¦gþÏÑ|1uxòuXá:'”«ÿšUO¬•ð1äÔ3XìQE"‚¿Hÿà”_[Ä>ñïÂ{é÷(k:b9û§"9€ö ä6«õù¹_C~À>:~Ö>Ÿ~Û}Jé´™—8.Æ ÿÛFCø kq5t~Óü*ÕûÃÚ\ùÖrH=qÔ<~Vw„]tOˆ#Óˆ_ô€AÈ#ÿCý(Ý2ëÿÀ²iù‡wÝÜsù°ÿ¾kðÏö—ø¯?ÆÏŽ~/ñt“4¶··Î–A¿‚ÕÈW¾E\û’{×ìoÄIáï„Ÿ|I캵ÑïžÞOGLWõÛ_„„ä“Q#HV¯…¼1©xÓÄ6&‘lnõÙDPÄ2{’z$“À“Ò¤ÐËDi*‚ÌN$×êÏìµÿÎð«ðsBÖ~&èº×ŠµHMÔÖy-°´F$Æ›© ³i`Ü‚Hí^EÿÞý–¼ccñÃß|Gá0|öRØß݈؅o-O”Çz0!È%GLƒÍ~¨ø‡ÄšO„t‹S[Ôí4}2ÝwKy}:ÃcÔ³RFr}ñw?à’ õÈÝü?¬øƒÃWùWÏK¨Õ]wûìWçWícû8ŸÙ{â„^oÇâS%„wâê;cnP;º„d,Üá3Áè¿`|#ûkü)ø‰ñ ÓÁ~ÖnüSÜ1ñ,ÓæhbQ÷åeU½KGLd+?ö¡ð‡ÁŸø{\ø§ãýѵ8âŠÔÚÎÛ¶p@Š("¸W.. Compartilhar este post Link para o post Compartilhar em outros sites
Tywin 7 Denunciar post Postado Outubro 4, 2012 Então... não dá pra saber que tipo de codificação foi usada, não parece ser HexaDecimal. É um tipo de Hash... tinha que perguntar pra eles. Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Heming 766 Denunciar post Postado Outubro 4, 2012 Olha só, não sei como está seu atual código. Vou me basear no que eu li. Até onde eu entendo de criação de imagens em tempo de execução, isso aqui está errado: header("Content-type: image/jpg"); print "<img src='".$row['FOTO']."'>"; O fato é que você deve exibir a imagem em um arquivo, por exemplo "imagem.php", e ai sim esse arquivo deverá ser chamado no SRC da tag img: mais ou menos assim: image.php: header( 'Content-type: image/jpeg' ); print pack('H*', $image); E então o HTML: <img src="image.php" /> O código mostrado não parece ser hexadecial, está mais para um arquivo binário compilado. Lembro que com o MS SQL, ao se salvar uma imagem no servidor, ele utilizava o código binário e, em cima do código binário, convertia para a base 64. Todos os erros que aparecem é por não ser um código hexadecimal. Encontrei essa thread do Stack Overflow, que fala sobre o formato Long RAW que não deve mais ser utilizado. Pois possui muitos problemas e só foi mantido por causa da compatibilidade com sistemas antigos. http://stackoverflow.com/questions/12722636/what-is-the-difference-between-long-and-long-raw-data-types-in-oracle No lugar de Long Raw deve utilizar BLOB. Compartilhar este post Link para o post Compartilhar em outros sites
Fagner 1 Denunciar post Postado Outubro 4, 2012 Então... não dá pra saber que tipo de codificação foi usada, não parece ser HexaDecimal. É um tipo de Hash... tinha que perguntar pra eles. Obrigado, Gabriel e Tywin estou tentando falar com o desenvolvedor da aplicação, o cara é mais dificil de se falar que a Dilma! Ficando pronto eu posto aqui todo o código. Abraços. Att, Compartilhar este post Link para o post Compartilhar em outros sites
Fagner 1 Denunciar post Postado Outubro 4, 2012 Obrigado, Gabriel e Tywin estou tentando falar com o desenvolvedor da aplicação, o cara é mais dificil de se falar que a Dilma! Ficando pronto eu posto aqui todo o código. Abraços. Att, Mudei de tabela para teste.. o hexa apareceu nessa nova tabela. codigo ficou da seguitne forma, seguindo conselho do Gabriel: imagem.php $Exec = new Classes(); $sql = "SELECT IMAGEM FROM RM.GIMAGEM WHERE ID = 31"; $stid = ociparse($Exec->ConnOracle(),$sql); ociexecute($stid); //$row = oci_fetch_object($stid, OCI_ASSOC+OCI_RETURN_LOBS); ocifetch($stid); $imagem = unpack("H*",OCIResult($stid,'IMAGEM')); //resultado de print $imagem sem header; //ffd8ffe000104a46494600010101004800480000ffdb00430002020202020202020202... ..000202020202020202020 header('Content-type: image/jpeg'); print $imagem[1]; teste.php <html> <body> <img src="imagem.php" /> </body> </html> Alguma luz agora? a imagem ainda nao imprimi porém não da mais erro, http://www.npdcometa.com.br/teste.php Compartilhar este post Link para o post Compartilhar em outros sites
Tywin 7 Denunciar post Postado Outubro 5, 2012 Em vez de UnPack() tenta Pack(). Se não funcionar, use Hex2Bin($Var). PS: Nunca desenvolvi pra Oracle... estou seguindo a linha de raciocínio do SQL Server que já estou calejado! Hehe. Compartilhar este post Link para o post Compartilhar em outros sites
Fagner 1 Denunciar post Postado Outubro 5, 2012 Em vez de UnPack() tenta Pack(). Se não funcionar, use Hex2Bin($Var). PS: Nunca desenvolvi pra Oracle... estou seguindo a linha de raciocínio do SQL Server que já estou calejado! Hehe. Bom dia... Elaia... a bendita da imagem não carrega nem na bala... Estou desanimando com isso já, mas infelizmente não posso seguir outro caminho de exibir essas imagens, diretoria quer pegar direto do banco... valeu ae pela força.. vou continuar pesquisando. Att, Compartilhar este post Link para o post Compartilhar em outros sites
Tywin 7 Denunciar post Postado Outubro 5, 2012 Eu queria fazer um teste aqui... mas o campo hexadecimal que você postou aí acima está incompleto. Pode postar ele inteiro se possível ? Compartilhar este post Link para o post Compartilhar em outros sites