![]() |
Enviar y recibir imgenes por servicios web
Buen da comunidad, quisiera saber si alguno de ustedes sabe enviar y recibir imgenes por servicios web de Delphi??
|
Revisa este artculo y la segunda parte, a ver si es lo que necesitas.
|
Gracias
Hola Neftali, muchsimas gracias por tu ayuda, pero esto no es especficamente lo que necesito, he estado investigando, y recopilando informacin y la forma ms fcil de enviar imgenes por servicios web, es tomar la parte binaria de la imagen y transformarla a texto, ene ste caso estoy intentando hacer un demo, para lograrlo y actualmente tengo esto:
Tengo un formulario, en el cual solo tengo un control de imagen, un botn y un dialogo, en ele evento ONCLICK del boton tengo:
La funcin DeCorrienteaTexto, tiene:
Ahora actualmente tengo solo un problema, todo el cdigo funciona, y carga los valores de forma correcta, pero cuando intento cargar el texto en el memo, el memo solo muestra hasta el primer espacio del archivo binario es decir: Archivo binario original: JFIF &%"/ #'),,,150*5&+,) )$,)*,*,5))/))2)5,5),),)),))5./),),))),),,,,1,-),,+) P" 9 ! 1AQ"aq2ѡBRb#3$r $ !1A"Qa ? gj{/'i*jquh\\F߸/Ѣuw5j~x/MEUtqsq'L֊Q O?|v@*m;|n/{}#5#P/`:bcD"qL($ ;lwT w ѱVӧ<3ybzyJ* [?8hZ3߈uuf/@I RrPv'0Rj@бpW, afoMjK:Ś|D.KJI j,Ãy>ʡ`T 51ڶҡG\vca ɽzjhHQ?cԞh)UPjE${`]@hH;yC ܢ`~qb^/t~bHDاa~0~|i`EXtþ+]ش;:R3𐍙-$r1~pvW*QSL5qN':V>So(oݱ_pZJ.-H<aP{<y)R.0RaM-h'Ar:V#KM9;hiDK7|TB Qؓ*p$;t6+=,> UlIF,OXsnzt<3*fDD<"M> *0XXӿ ,* 4jEfuJ߳jR!y2o#^ؒ#l\ycr@>QZetV\K-#T < {ڹOUTOwi r0pSz!Y.c0AbFSS*e_I#fX!Y55C)S`YB}# ߋiP_c|1݊jzl6|+mcZ!L0LĹUe4ēn]zϖfE!J#1`dm8:gøp߃pCV\Dڢ*QgƟV4lO;1D xD@$Wnu789UM u } ),*2pGfPC/Q#cuu2E'N2bf%@;ퟮ 0ϐ>9jPOb'am¡lHȾ 3 8;u!yx-n5xN.^7d4$*~x lI!@)'Py×@:+.]wnfMbokio*rĆ x<#w/%BU&^ѵXmsL40ym p9.(UIaērb"2BE fߑKD*3$ ^7 u;sfP 9cP])ۧRJPFI MG?\W =Ŗ F>LA? b*g~1]R+w3|kQs&TYYLt ;`VD̟X&l.i*Y"L_f!|*<IldzVtއ]0$ k$I qL8L(*1ᾐ _Ӗ(bj__˰e)%vk0i-7 !:I^q*i++(6V*g}RJ&$ 1jQv> UQ T$`c-ZTlL7* <Juo)eU4$DLy`.1Zd 䣟ն]uiT*Pu-xsp.#]KB9&>g& m]0WU*wye @ߙӯrM :*țA<3,t'jS)U US$7 8w{mF:SPX/m e ȥy.'nSSU*UfS!R uPA㗏7_hKJM*c9?h+)#$\e5Fe&]*m8W,gV*35MrBvk>S@N7e*Bu7}0+qb#*bS[!@,&f"Ty: ogk3~QII/O9b(G<g5j*Q5Rb]*9_LQ){ fJ\KW6Zט$= y UfY0ߐ;7`xi WգL1"wI7J<xBWPk|K0ܿ[~RyǶDS1j4j3+Rt#Ke˖sAU?үc\A)"@cLry|z,NJq(p0d :E-`<8qāj*B9zj$-^L>=Ͱ*r*]-4*+[*U@!}N.dYZ̻eYu Texto mostrado en el memo: Y no se por que?? |
Y si agregas un Seek() antes de pasarlo al Resut?
Saludos |
Hola Egostar, gracias por tu ayuda, prob con la linea de cdigo, pero sigo obteniendo el mismo resultado.
|
Hola comunidad ya encontr la solucin a mi problema, tuve que crear una funcin adicional que pasa de texto a imagen, esta funcin me retorna un TStream:
Ya en la imagen en el boton agregue solo estas lineas:
|
Bueno, pero es que t no ests conviertiendo en texto tu imagen. La propiedad DataString del Stream simplemente coloca los datos del stream en un string pero este string sigue teniendo datos binarios. En Delphi, un string carga datos de cualquier tipo, no slo caracteres legibles.
Debes buscar alguna biblioteca que te codifique la imagen como texto como UUencode o Base64. Me imagino que los componentes Indy traen algo as puesto que es lo que se usa para transferir datos binarios atravs del correo electrnico. // Saludos |
Hola Roma gracias por tu ayuda y tienes toda la razn, busque un cdigo para codificar la imagen a base 64, me base en este hilo del foro: http://www.clubdelphi.com/foros/showthread.php?t=48924, implemente el cdigo, y cuando intento enviarlo por el servicio web obtengo el siguiente error:
El valor de la variable a la cual le aplico el base 64 es: El cdigo actual que tengo es:
|
Respuesta
Hola, por fin despus de buscar y buscar, encontr, que el usuario Seoane, ofrece su unit, con solo cdigo, sin usar la API de Windows, no entiendo todava, el por que del error, tal vez falta de compatibilidad, o tal vez Windows modifico esa unidad para Windows 7, la verdad todos son supuestos, pero la solucin es usar la Uni de Seoane, sin utilizar las librerias de Windows, la unit esta: http://delphi.jmrds.com/?q=node/84. :cool:
|
|
Enviar y recibir imgenes por servicios web
Ya que lo solucionaste.
Podas colgar el cdigo completo de ejemplo de delphi y del servicio web. Muchas Gracias. |
Hola junyandroid, bienvenido a Club Delphi
Quiza el codigo que se publico en el hilo pueda dar lugar a confusiones para alguien novato. Las "imagenes" no son mas que un monton de caracteres (que no son mas que "bytes") con algun formato en particular. Luego hay componentes o bibliotecas que saben interpretarlo para que se pueda ver en pantalla. Pero no deja de ser un "string gigantesco". Si tanto tu servidor como cliente son Delphi, la forma mas sencilla de trabajar es usando Streams, en la que basicamente estas trabajando al nivel "bytes". Datasnap es capaz de manejar descendientes de TStream sin que haya necesidad de intervenir ni hacer nada mas El servidor expone metodos de este estilo: (escribo de memoria, se me puede escapar algun detalle la sintaxis)
El cliente (ClientMethods1 es la clase proxy que te genera datasnap)
{*}: No recuerdo exactamente pero es posible que Datasnap se haga cargo del manejo de memoria de los objetos que pasan a traves del proxy. En ese caso los bloques try-finally sobran y el Free no solo no es necesario sino que podria generar errores. En realidad no se porque siempre hubo tanto rollo con el base64. Se ha convertido en una suerte de "estandar" cuando en realidad no tiene demasiadas ventajas (la codificacion lleva tiempo, se incrementa el tamao del stream adicional..). El unico caso en que usaria base64 es si estoy comunicandome con un webservice que ya este implementado asi y no pueda cambiar |
La franja horaria es GMT +2. Ahora son las 21:18:24. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traduccin al castellano por el equipo de moderadores del Club Delphi