从 android 服务器获取照片到 iOS
Get photo from android server to iOS
我想将图像文件从 android 服务器发送到 iOS 客户端。我正在使用 swift 语言和套接字编程(ip-port)。有联系。我 send/get 字符串数据,但我无法获取图像文件。如何获取 swift 端的图像文件?
if aStream == self.inputStream{
var buffer: UInt8 = 0
var len: Int!
while (inputStream?.hasBytesAvailable != nil){
len = inputStream?.read(&buffer, maxLength: 2048)
if len > 0{
var output = NSData(bytes: &buffer, length: len)
if output != nil{
var img = UIImage(data: output) //Error !!!
}
}
}
}
InputStream
无法一次获取所有数据;因此您需要在整个迭代过程中使用 NSMutableData 对象附加字节,直到 hasBytesAvailable
属性 为假。这意味着您没有剩余字节,您获得了所需的所有图像数据。顺便说下下面的代码是Swift3.0
var data = NSMutableData()
fileprivate func handleIncomingMessage(_ stream:Stream) {
if stream === inputStream {
let bufferSize = 1024
var buffer = Array<UInt8>(repeating: 0, count: bufferSize))
while(inputStream.hasBytesAvailable) {
let bytesRead = inputStream.read(&buffer, maxLength: bufferSize)
if bytesRead >= 0 {
data.append(&buffer, length: bytesRead)
}else {
if bytesRead == -1 {
//TODO: Server closed.
ITLog.info("Server closed")
}
}
}
// `NSMutableData` object now has valid image bytes.
// Create an UIImage with `data` object.
let image = UIImage(data: data)
clearSocketData()
}
}
fileprivate func clearSocketData() {
data = NSMutableData()
}
我想将图像文件从 android 服务器发送到 iOS 客户端。我正在使用 swift 语言和套接字编程(ip-port)。有联系。我 send/get 字符串数据,但我无法获取图像文件。如何获取 swift 端的图像文件?
if aStream == self.inputStream{
var buffer: UInt8 = 0
var len: Int!
while (inputStream?.hasBytesAvailable != nil){
len = inputStream?.read(&buffer, maxLength: 2048)
if len > 0{
var output = NSData(bytes: &buffer, length: len)
if output != nil{
var img = UIImage(data: output) //Error !!!
}
}
}
}
InputStream
无法一次获取所有数据;因此您需要在整个迭代过程中使用 NSMutableData 对象附加字节,直到 hasBytesAvailable
属性 为假。这意味着您没有剩余字节,您获得了所需的所有图像数据。顺便说下下面的代码是Swift3.0
var data = NSMutableData()
fileprivate func handleIncomingMessage(_ stream:Stream) {
if stream === inputStream {
let bufferSize = 1024
var buffer = Array<UInt8>(repeating: 0, count: bufferSize))
while(inputStream.hasBytesAvailable) {
let bytesRead = inputStream.read(&buffer, maxLength: bufferSize)
if bytesRead >= 0 {
data.append(&buffer, length: bytesRead)
}else {
if bytesRead == -1 {
//TODO: Server closed.
ITLog.info("Server closed")
}
}
}
// `NSMutableData` object now has valid image bytes.
// Create an UIImage with `data` object.
let image = UIImage(data: data)
clearSocketData()
}
}
fileprivate func clearSocketData() {
data = NSMutableData()
}