Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Fagner

exibir imagem de bd oracle.

Recommended Posts

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

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

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

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

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

Tywin, nada heim...

Alguma outra indicação?

Att,

Fagner

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

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 hexa.jpg.

 

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

	$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

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

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

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

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.