Guardar imagen en binario en un archivo (C#)

Iniciado por Hartigan, 4 Agosto 2010, 12:58 PM

0 Miembros y 1 Visitante están viendo este tema.

Hartigan

Hola, tengo un nuevo problema, tengo una imagen la cual obtengo directamente de la base de datos... Una vez obtenida quiero almcenar su valor binario en un archivo (para lo del vcard), como puedo hacerlo???

gracias de antemano.

[D4N93R]


Hartigan

jaja, sí, lo estuve mirando, pero a ver, yo cuando recogo la imagen en la base de datos se supone que ya está en binario. pero luego al añadirlo al archivo como lo hago?? yo hago lo siguiente: (para crear un vcard file)

sw.WriteLine("PHOTO;ENCODING=b;TYPE=JPEG:" + photo);

y claro una vez que tngo el archivo .vcf, no funciona. El contenido del archivo al abrirlo con el bloc de notas es este:


....
....
PHOTO;ENCODING=b;TYPE=JPEG:System.Byte[]
TEL;WORK;VOICE:123456789
TEL;HOME;VOICE:980512833
TEL;CELL;VOICE:660778300
TEL;WORK;FAX:
.....
...


Es decir no me está representando los bits...

A ver si me podeis ayudar..

gracias. 


raul338

intenta usar sw.Write(photo, 0, photo.length);

Dudo que funcione :xD, en todo caso, escribe byte x byte directamente :D

[D4N93R]


Hartigan

Cita de: D4N93R en  5 Agosto 2010, 01:17 AM
Qué tipo es esa variable "photo"?

Es una variable de tipo byte, normal para leer la imagen de la base de datos como haciamos en el otro enlace que me has pasado. xDD

[D4N93R]

Ah, claro ya lo veo, es que no lo vas a poder hacer así xD Tienes que convertir el byte[] en string..

Código (csharp) [Seleccionar]
sw.WriteLine("PHOTO;ENCODING=b;TYPE=JPEG:" + System.Text.ASCIIEncoding.ASCII.GetString(photo));

Porque al meterlo ahí, y concatenarlo, automáticamente se le hace .ToString, y ese ToString es de object, por lo que te sale es el nombre de la clase.

Saludos!

Hartigan

mmm, no me funciona, en el txt veo que genera muchas interrogaciones en lugar de caracteres y me sigue sin cargar la imágen....



...
PHOTO;ENCODING=b;TYPE=JPEG:???? JFIF  ` `  ?? ?Exif  MM *           J       R(       1       Z?i       j       `      `   Paint.NET v3.36  ??    t   |    C R E A T O R :   g d - j p e g   v 1 . 0   ( u s i n g   I J G   J P E G   v 6 2 ) ,   q u a l i t y   =   9 0
     ?? C 
  
 



?? C  
??  Z Z" ??           
?? ?   } !1AQa"q2???#B??R??$3br?
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz???????????????????????????????????????????????????????????????????????????        
?? ?  w !1AQaq"2?B???? #3R?br?
$4?%?&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz??????????????????????????????????????????????????????????????????????????   ? ?w??
???Q[[<?8TA?k??G?|w?K???ea?2Ha? ????|G(?1?7^?R?ap?w$`W??O????.?r?I?<?9??F1?d?U????Kuu=?[?????88????[l?;)+D?s?????wL?xQ????????mi,,x??^i??U???????+@?C???z? ?????<7?}?G?[g?8?52??kS??&??7L????c??e??? ?K???dc??$??H???t????K??c?K2(c?_8?i?????N????&?gyP>^8?9? 85????z??;?e?-?/?}??? ??5?C?3_O~?????m?\?)???????rG?=??>j???}????u??_???????????F????G?k?*??>? ?u? c? ?????r2)?? ?H??73?p??????&?4?d??????>??????Z???????????mI?C??\? ???_?7?+??_%6??0???0??.+c?|S|????????????O?3????)?????????Dq-?c?c??????u???R?eo???I I!lyj????(???z?5ss%??O??
?????_?EY[#???@??A??:??{??@yO??2"??~??g?A ??|w?gw??]>????4????y?z??<??? ??????5???zg????M???f?|3??X??x???!u?<1R;H'+?s?g???uv??j*V??g???~x)f????[k5??`>?A??n????WR????r??V???!t?[t ??q??\???bj7&???i?MZ??fE ??
/ j8U?W9??}????8?NU??dG??W3G?%???t??"r?<??x'??WI???W???4???sdJ?<S??,>????wrF??d??h??!????}kgP???E?jF@???O? ?J??+?V??~????-KN?K`y?g?????tBC??????]?|???? e???+??c??m"??G? ?L???m?7x.[8????w@??T??????9g??%?k1???=?}x????mB??z???[w_"?s l?2????y=??RC?[=[??Q??nc??V?5y?P={Q?????'?????@.'M????(???#?q????J??6i-?0????-??n???H???k?????UH??>g_???_3?U??B? W???d?3??4 1??&?Ms3???w?A?9?t????J???7??GE??Xm?8????j3?5??O?T???&????X??s??????:?? ?oP
t???x<G)??4_tn??????=??:W??5??????N"K??1?j?'@?E?N??K??CU?? 4???Q???p[???=j5????
??? ?G?{;?m?$?]??9??p???RI$?*? ???_???$?'???~????r???5??,
?x?@'yf?I???=?91N?EY?^h?+[YN?'x ?b?????o?W?y???h????????????T??w#?Mq???V?H&)?????}??H?Gr?;???A????K??
sJ???j??????#??:b?`r7??????i???l4??9oc?3?+?KbbR??(?P??J?=r?P???????{k??)? ??7?????[??=?N???V???? ?I]?u??)???????p???}w??.?oy???Xgu??X!F?"?6'??O??x??k??2?%???H??? ?#????'???????~?^2?E`'? ???????D{?\U&??F?RuK_???????????yt;?;3??n8<?_RXw???:4Z???o?$0??L1?J???9???!?\&?? f?t?????A4G?RX?0a? ?}k?????>,?.?P?u!?(uK???a?0?????>h?????OS?????K?N???(?7?D?? v??b?o?e????=?Vql????????~"???? -???#???
? ?????? )N ?E:???Y??Ox????[?e?|? ?
?O?????Mp".-?????H?b3?????|4??r?[?1???:??q??UE%?.NR?>??@???Gyv _2x????S???)u/????u???+=.?3???<???Vc??==?cY??9?????????y?m?`gc? 7????????W??l??^??::?i?????3 H,????N???1???Q?_x?k???yl???jg 0#??W?<q?;??,?1?K??%?iqj??C6?<?#?l{???h??(???1???I?7??RE?GV???y???EO0X? ?Q????f{????<G?6?B????? ??y'?x?H?K????PGi??WV??|.-??7~??P`????/??3??~$?????f?._Obp??R???{??w???????l???g??????+?r?Q????=9ROPMq??*;(8?K?0x?????Il???+e ??Wv?|?8 ?%?rI?,?}??g???koi???????n!'?C?rb???g?j?,?d?$???_A???k/??rz?????|???/???P,{?w?$c????hJ??VeN3J?Y???+- ?w??>??????.-?????? G ?????C_?x?x?R???) ??????W?W?Im???"=KN/??zy??????????zv???|S????$_?6????YH?A9???c]rwW<N??f?D?e?1????O0i?? ??J??????s_p????? d}
.|x?[??5??
????? _?@=?=?!?????~6???'???r??z?*?
??S??6{?^}??8t;?2<y1???? ?(????b?=???=o??X???rX???%?rz?
LIm!??????_?Y}???!???'?rb%t?r???[??[?? ??O??j??r??"? ?? u?????5???4K? -Qm??M????????:?? =???|Ssksk{5??2??l=85?sG???P??v}?:??w?H?f?v?????????_?]??????? X}??"]c@W "?6?u??P{09? ?|?Dv????????N??.+?-_G?`u
?=???e~B?8? d??L Sn?u'??7?(?????n??J?i???J?6<?+4x?9? ?@5????[?!???]??u`f? ??9???^y??????v??;???Ny.S#=?^???Ti?B?????HX?$?}I5?H?5(?R?????M????p???/ _I???F??????T?`????????????b~?r3??????GR=??XX???p????W?~??"mc??:Do??D??N?F0]???X??\?W????(a????i?=??7k??l???????Ga???Z???&?m-"?e.???$?lg ????O????ew[???Y?(9???y?8??y??&?? R ???<????=E???:??n???????N???d1??? ?6??Jn?TQo?_??&i???bI.?;x#Rr6??^?'?x???????y?V??Fy?6?P?N[i???q^k?/Y?$???????<?????f?????9-+3I$?{?e8?lpT??????
TEL;WORK;VOICE:123456789
TEL;HOME;VOICE:980512833
TEL;CELL;VOICE:660778300

....



raul338

Cita de: D4N93R en  5 Agosto 2010, 02:46 AM
Ah, claro ya lo veo, es que no lo vas a poder hacer así xD Tienes que convertir el byte[] en string..

Código (csharp) [Seleccionar]
sw.WriteLine("PHOTO;ENCODING=b;TYPE=JPEG:" + System.Text.ASCIIEncoding.ASCII.GetString(photo));

Porque al meterlo ahí, y concatenarlo, automáticamente se le hace .ToString, y ese ToString es de object, por lo que te sale es el nombre de la clase.

Saludos!

MMm... que codificacion estas grabando el archivo? Yo intentaria con ANSI o UTF-8

Código (csharp) [Seleccionar]
sw.WriteLine("PHOTO;ENCODING=b;TYPE=JPEG:" + System.Text.Encoding.UTF-8.GetString(photo, 0, photo.Length));
(PD: Nunca me funciono el GetString por si solo :¬¬ siempre tuve que poner inicio y final :P)

[D4N93R]

Si exacto, eso era solo un ejemplo, prueba con otras codificaciones..

Saludos!