Как конвертировать поток в изображение? - PullRequest
0 голосов
/ 03 июня 2019

У меня есть служба WCF, и я отправляю img по параметру в Stream, и я хочу сохранить изображение, которое я отправил в файл на моем сервере, в данном случае это localhost.

Можете ли вы помочь мне?

Public Function UploadStream(ByVal stream As Stream) As Byte() Implements IService1.UploadStream

    Dim buffer As Byte() = New Byte(9999) {}
    Dim bytesRead As Integer, totalBytesRead As Integer = 0

    Do
        bytesRead = stream.Read(buffer, 0, buffer.Length)
        totalBytesRead += bytesRead
    Loop While bytesRead > 0

    Dim imagememorystream As MemoryStream = New MemoryStream(buffer)
    Dim imgFromStream As Image = Image.FromStream(imagememorystream)

    Return buffer

End Function

Если я удаляю этот код: Dim imagememorystream As MemoryStream = New MemoryStream(buffer) Dim imgFromStream As Image = Image.FromStream(imagememorystream), функция возвращает байтовый массив, когда я добавляю его, служба WCF не работает.

Erro do Pedido
O servidor encontrou um erro ao processar o pedido.Mensagem de exceção é 'O parâmetro não é válido.'.Consulte os registos do servidor para obter mais detalhes.Дополнительные значения:
em System.Drawing.Image.FromStream (поток Stream, логическое значение useEmbeddedColorManagement, логическое значение validateImageData) em WcfService2.Service1.UploadStream (поток Stream)
em C: \ Users \ d-sil \ source \ repos \ WcfService2 \ WcfService2 \ Service1.svc.vb: строка 40
em SyncInvokeUploadStream (Object, Object [], Object []) em System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke (экземпляр объекта, Object [] входные данные, объект [] и выходные данные)
em System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin (MessageRpc & rpc)
em System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5 (MessageRpc & r).Dispatcher.ImmutableDispatchRuntime.ProcessMessage11 (MessageRpc & rpc)
em System.ServiceModel.Dispatcher.MessageRpc.Process (логическое значение isOperationContextSet)

1 Ответ

0 голосов
/ 05 июня 2019

Я не знаю много о VB, но я сделал то же самое в C #. сначала вам нужно вернуть Stream вместо байтового массива, а просто вернуть изображение так:

var Image = new MemoryStream(image) { Position = 0 };
WebOperationContext.Current.OutgoingResponse.ContentType = "image/*";
return Image;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...