【发布时间】:2017-03-23 18:25:55
【问题描述】:
我有一个要发送到服务器的 NSInputStream,在上传过程中,我想显示正在上传的图像。方法位于单例中,它正在接收该 NSInputStream。有没有办法读取该流并将其转换为 UIImage?
我试过这个,但没有运气。我的错在哪里?
var buffer = [UInt8](count:1024, repeatedValue: 0)
thumbnailStream.open()
if (thumbnailStream.hasBytesAvailable){
let len : Int = inputStream.read(&buffer, maxLength: buffer.count)
var pictureData = NSData(bytes: buffer, length: len)
var imagess = UIImage(data: pictureData)!
self.headerProgress.imageView.image = imagess
print("Data of image = \(pictureData.length)")
}else{
print("No bytes")
}
谢谢!
【问题讨论】:
-
你用过调试器吗?当您运行您发布的代码时,实际会发生什么?
-
变量
pictureData具有缓冲区计数1024的长度。我更改了计数的值,pictureData的长度更改为计数的值,并且运行时失败并且代码的pictureData行被突出显示。另外,我确定我将图像数据发送到此方法,因为媒体已成功上传到服务器。 @rmaddy -
您需要从输入流中读取所有数据,而不仅仅是前 1024 个字节。
-
有没有办法获取流的大小?因为我无法预测带有图像的流有多少字节。
-
你必须循环直到没有更多的数据。
标签: ios swift uiimage nsinputstream bytestream