2016-06-20 14 views

risposta

2

Sembra esserci una dimensione massima per le immagini uri dei dati, tuttavia il tuo codice iniziale mi sembra buono e non genera un errore interno del server esplicito (come sarebbe se il datauri fosse troppo grande).

Ho implementato qualcosa di simile:

var reply = message.CreateReply("Here's a **datauri image attachment**"); 
reply.Attachments = new List<Attachment> { 
    new Attachment() 
    { 
     ContentUrl = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAAQABAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCAAQABADAREAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAACAUH/8QAJhAAAQMDAwQCAwAAAAAAAAAAAQIDBQQGEQcIEgATISIUMRUjUf/EABYBAQEBAAAAAAAAAAAAAAAAAAMBBP/EAB8RAAICAQQDAAAAAAAAAAAAAAECAAMRBBITIiFB8P/aAAwDAQACEQMRAD8AubjdVbtj5cQFi3tX2lS/ka16Rko9pZqHHfklplgKAylJPNR/vEZPWyvTpUN7jMyK3M21fE03ZLuQ1Gmbyc0j1Dudq7o8RztXFzXEGtacZeQhxipKT7D9qcKUOQ+skfRWKrdqxj71HI4erHME97633Fc+pF10c64pIg7ll6CldoEcHEoTVL7fMZ9se2CPOekdkCiSjIYmLvYvMRdLQPXDG3FGSEzK1iKB4rYCnaan7oVwcCQCHVqGTkkeEefGOgbTtjccyW6sM4QAT//Z", 
     ContentType = "image/jpg", 
     Name = "datauri" 
    } 
}; 

che si traduce in l'emulatore che mostra questa immagine (ho bisogno di più rep per incorporare immagini .. ugh ..)

data uri attachment image in the botframework emulator

Aggiornamento : una versione data uri di un'immagine da ~ 20kb funziona bene, tuttavia una versione di dati uri di un'immagine da ~ 140kb non riesce con un "500 internalservererror" nell'emulatore. Presumo che c'è un limite di dimensione, dopo tutto ..

bigger data uri attachment image in the botframework emulator

Come tale, si può verificare che egli datauri si sta utilizzando è un'immagine valida? Puoi creare una semplice pagina html con un elemento img, incollare il valore in ContentUrl e vedere l'immagine nella pagina html? O anche semplicemente incollarlo in una barra degli indirizzi del browser.

1

Quando si desidera visualizzare le immagini è possibile utilizzare ribassi.

var replyMessage = "[ImgName](" + ImagesUrl + ")"; 
return message.CreateReplyMessage(replyMessage); 

Bot Framework Markdown Documentation

================= Convertire stringa Base64 all'Immagine ================ ==========

public void SaveImage(string base64) 
{ 
    using (MemoryStream ms = new MemoryStream(Convert.FromBase64String(base64))) 
    { 
     using (Bitmap bm2 = new Bitmap(ms)) 
     { 
      bm2.Save("SavingPath" + "ImageName.jpg"); 
     } 
    } 
} 

Quindi è possibile utilizzare l'URL.

+0

Non riesco a visualizzare l'immagine nell'emulatore, inoltre ImagesUrl può essere sostituito dall'URL di dati non elaborati (base 64), perché voglio visualizzare un'immagine data base64 –

+0

Puoi convertire quella stringa come immagine e usare quel collegamento. – SilentCoder

+1

Non voglio memorizzare l'immagine per motivi di privacy, non posso specificare direttamente base64? –