Tôi đang cố tải đối tượng UIImage
từ NSData
và mã mẫu là NSImage
, tôi đoán chúng phải giống nhau. Nhưng bây giờ chỉ cần tải hình ảnh, tôi tự hỏi điều gì là tốt nhất để khắc phục sự cố UIImage
tải vấn đề NSData
.NSData và UIImage
Trả lời
UIImage có phương thức - initWithData:
. Từ tài liệu: "Dữ liệu trong tham số dữ liệu phải được định dạng để khớp với định dạng tệp của một trong các loại hình ảnh được hỗ trợ của hệ thống".
theData phải là đối tượng NSData
đã chứa dữ liệu. Bạn cần tải tệp/tải xuống đối tượng NSData
trước khi được sử dụng. Bạn có thể kiểm tra nó bằng cách sử dụng NSLog
trên theData và xem liệu nó có chứa dữ liệu hợp lệ hay không.
Tôi không cố gắng UIImageJPEGRepresentation()
trước đó, nhưng UIImagePNGRepresentation
hoạt động tốt đối với tôi, và chuyển đổi giữa NSData
và UIImage
là chết đơn giản:
NSData *imageData = UIImagePNGRepresentation(image);
UIImage *image=[UIImage imageWithData:imageData];
Hãy thử này để chuyển đổi một hình ảnh để NSData:
UIImage *img = [UIImage imageNamed:@"image.png"];
NSData *data1 = UIImagePNGRepresentation(img);
Để thực thi mã an toàn, hãy sử dụng if-let block with Data, khi hàm UIImagePNGRepresentation trả về, giá trị tùy chọn.
if let img = UIImage(named: "Hello.png") {
if let data:Data = UIImagePNGRepresentation(img) {
// Handle operations with data here...
}
}
Lưu ý: Dữ liệu là Swift 3 lớp. Sử dụng dữ liệu thay vì NSData với Swift 3
hoạt động hình ảnh Generic (như png & jpg cả hai):
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...
}
}
Bằng cách sử dụng phần mở rộng:
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...
}
}
- 1. Tạo UiImage từ NSData
- 2. Lấy NSData cơ bản * từ UIImage
- 3. Tìm loại hình ảnh từ NSData hoặc UIImage
- 4. Sự khác nhau giữa [UIImage imageNamed ...] và [UIImage imageWithData ...]?
- 5. Làm thế nào để kiểm tra xem một NSData có giá trị sử dụng trong UIImage
- 6. Làm thế nào để chuyển đổi giá trị NSData để UIImage
- 7. Làm cách nào để chuyển đổi UIImage sang NSData hoặc CFDataRef?
- 8. Gửi UIImage qua NSOutputStream
- 9. [NSData writeToFile] ghi vào đâu?
- 10. Thêm UIImage vào CCSprite?
- 11. sử dụng NSData trong iPhone
- 12. ASIHTTP: Tải lên UIImage?
- 13. Gửi và nhận NSData qua GameKit
- 14. Đang tải UIImage từ UIImagePickerControllerReferenceURL
- 15. NSData isEqualtoData
- 16. Tạo UIImage từ một UIImage khác bằng cách sử dụng imageWithData trả về nil
- 17. Sử dụng ALAssetsLibrary và ALAsset đưa ra Hình ảnh dưới dạng NSData
- 18. Chèn NSData vào SQLite trên iPhone
- 19. Thêm UIImage lên trên một UIImage khác
- 20. Hiển thị võng mạc và [UIImage initWithData]
- 21. Sự khác biệt giữa UIImage và UIImageView
- 22. QLPreviewController với NSData?
- 23. iOS SecKeyRef đến NSData
- 24. Xoay UIImage?
- 25. Đặt PDF vào NSData
- 26. Byte Array vào NSData
- 27. iPhone - UIImage Leak, CGBitmapContextCreateImage Leak
- 28. Chuyển đổi âm thanh và video thành NSData
- 29. Chuyển đổi NSString thành NSData và ngược lại
- 30. UIImages tạo từ NSData không tôn vinh UIViewContentMode
Vâng, đó là những gì tôi đang sử dụng . NSData có địa chỉ, trong khi sau khi gọi UIImaeg -initWithData: theData, điểm trở thành 0. Tôi không chắc chắn nơi để xem thông báo lỗi. – BlueDolphin