[英]NSData and UIImage
我試圖從NSData
加載UIImage
對象,示例代碼是NSImage
,我猜他們應該是相同的。 但是剛剛加載圖像,我想知道什么是最好的解決UIImage
加載NSData
問題。
我之前沒有嘗試過UIImageJPEGRepresentation()
,但UIImagePNGRepresentation
對我來說很好, NSData
和UIImage
之間的轉換很簡單:
NSData *imageData = UIImagePNGRepresentation(image);
UIImage *image=[UIImage imageWithData:imageData];
UIImage有一個 - initWithData:
方法。 從文檔:“數據參數中的數據必須格式化,以匹配系統支持的圖像類型之一的文件格式。”
試試這個將圖像轉換為NSdata:
UIImage *img = [UIImage imageNamed:@"image.png"];
NSData *data1 = UIImagePNGRepresentation(img);
theData應該是一個已經包含數據的NSData
對象。 在使用之前,您需要將文件加載/下載到NSData
對象。 您可以使用Data上的NSLog
檢查它,看它是否包含有效數據。
為了安全執行代碼,使用帶有Data的if-let塊,因為函數UIImagePNGRepresentation返回,可選值。
if let img = UIImage(named: "Hello.png") {
if let data:Data = UIImagePNGRepresentation(img) {
// Handle operations with data here...
}
}
注意: 數據是Swift 3類。 在Swift 3中使用Data而不是NSData
通用圖像操作(如png和jpg):
if let img = UIImage(named: "Hello.png") {
if let data:Data = UIImagePNGRepresentation(img) {
handleOperationWithData(data: data)
} else if let data:Data = UIImageJPEGRepresentation(img, 1.0) {
handleOperationWithData(data: data)
}
}
*******
func handleOperationWithData(data: Data) {
// Handle operations with data here...
if let image = UIImage(data: data) {
// Use image...
}
}
通過使用擴展名:
extension UIImage {
var pngRepresentationData: Data? {
return UIImagePNGRepresentation(img)
}
var jpegRepresentationData: Data? {
return UIImageJPEGRepresentation(self, 1.0)
}
}
*******
if let img = UIImage(named: "Hello.png") {
if let data = img.pngRepresentationData {
handleOperationWithData(data: data)
} else if let data = jpegRepresentationData {
handleOperationWithData(data: data)
}
}
*******
func handleOperationWithData(data: Data) {
// Handle operations with data here...
if let image = UIImage(data: data) {
// Use image...
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.