В настоящее время я работаю над приложением Windows Store, в котором я должен сделать снимок, сохранить его локально, а затем, когда вызывается синхронизация, отправьте его на службу, которая сохранит изображение на сервере.Stream.CopyTo() не копирует данные под определенную длину
У меня возникла проблема при копировании этих изображений. Что я делаю следующее:
Получить список всех изображений в указанной папке и извлечь их
buffer.toarray
вbitearray
Dim fileList As IReadOnlyList(Of StorageFile) = Await folder.GetFilesAsync() For Each file As StorageFile In fileList Dim Buffer As IBuffer = Await Windows.Storage.FileIO.ReadBufferAsync(file) fileBytes = Buffer.ToArray() lstfileBytes.Add(fileBytes) Next file
тогда я посылаю его к моей службе VB.Net который сохраняет изображение в файл он создан с использованием
stream.copyto()
For i = 0 To lstMemoryPicturesReservoir.Count - 1 Dim fs As FileStream = New FileStream("\\SERVER\Data\name.jpg", FileMode.Create) Dim memory As Stream = New MemoryStream(lstMemoryPicturesReservoir(i)) memory.position = 0 memory.CopyTo(fs) Next
Этот код работает для меня, за исключением случаев, когда размер изображения становится маленьким до определенной точки. Я заметил, что когда lenght
моего ByteArray
составляет около 4000 или ниже, изображение не копируется должным образом. Когда я открываю его в моем средстве просмотра фотографий Windows Я получаю следующее сообщение об ошибке:
для Windows Photo Viewer не может отобразить эту картину, потому что файл пуст
Любая идея, что может быть вызывая эту проблему или как ее исправить?
Итак, это сработало для вас? –
Да, это работает. Я не совсем понимаю, в чем отличие 'using' делает, хотя – micbobo
Nvm Я прочитал https://msdn.microsoft.com/en-us/library/htd05whh.aspx, который сделал его более ясным – micbobo