Próbuję załadować obiekt UIImage
z NSData
, a kod przykładowy był NSImage
, myślę, że powinny być takie same. Ale właśnie teraz ładowanie obrazu, zastanawiam się, co jest najlepsze, aby rozwiązać problem UIImage
ładowanie NSData
.NSData i UIImage
Odpowiedz
UIImage ma metodę - initWithData:
. Z dokumentów: "Dane w parametrze danych muszą być sformatowane tak, aby odpowiadały formatowi jednego z obsługiwanych typów obrazu systemu."
theData powinna być obiektem NSData
, który już zawiera dane. Przed załadowaniem pliku należy go wczytać do obiektu NSData
. Możesz to sprawdzić, używając NSLog
w danych i sprawdzić, czy zawiera prawidłowe dane.
nie próbowałem UIImageJPEGRepresentation()
wcześniej, ale UIImagePNGRepresentation
działa dobrze dla mnie, a konwersja między NSData
i UIImage
jest martwy prosta:
NSData *imageData = UIImagePNGRepresentation(image);
UIImage *image=[UIImage imageWithData:imageData];
Spróbuj przekonwertować obraz do NSData:
UIImage *img = [UIImage imageNamed:@"image.png"];
NSData *data1 = UIImagePNGRepresentation(img);
Aby bezpiecznie wykonać kod, użyj bloku if-let z danymi, w funkcji zwracanej przez funkcję UIImagePNGRepresentation, wartość opcjonalna.
if let img = UIImage(named: "Hello.png") {
if let data:Data = UIImagePNGRepresentation(img) {
// Handle operations with data here...
}
}
Uwaga: danych jest Swift 3 klasy. Wykorzystanie danych zamiast NSData z Swift 3
Generic operacji graficznych (takich jak png & jpg zarówno):
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...
}
}
Przez używając rozszerzenia:
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. Utwórz UiImage z NSData
- 2. Uzyskaj bazowe dane NSData * z UIImage
- 3. Konwersja UIImage do NSData i zapisz z danymi podstawowymi
- 4. Jak sprawdzić, czy NSData jest ważna do użytku w UIImage
- 5. Konwersja UIImage do NSData bez użycia UIImagePngrepresentation lub UIImageJpegRepresentation
- 6. Skąd pisze [NSData writeToFile]?
- 7. Wysyłanie UIImage przez NSOutputStream
- 8. UIImage i resizableImageWithCapInsets Swift
- 9. Obracanie i przycinanie UIImage
- 10. NSData contentsOfUrl zwraca zero
- 11. Dodaj UIImage do CCSprite?
- 12. Używanie ALAssetsLibrary i ALAsset wykup obraz jako NSData
- 13. Różnica między UIImage i UIImageView
- 14. UIImage i NSCoding iOS 5.1
- 15. Jak serializować UIImage do JSON?
- 16. Kiedy używam UIImagePNGRepresentation lub UIImageJPEGRepresentation do konwersji UIImage do NSData, rozmiar obrazu jest zbyt dużo wzrosła
- 17. Niedokładny rozmiar NSData podany w bajtach
- 18. Uzyskaj NSData prosto z AFNetworking, zamiast pozwalać mu konwertować na UIImage
- 19. Jak przekazać NSData jako NSString i odzyskać?
- 20. Konwersja NSString na NSData i vice versa
- 21. Różne między NSData i NSMutableData w iPhone
- 22. Dodaj UIImage na wierzchu innej UIImage
- 23. Wkładanie NSData do SQLite na iPhone
- 24. maskowanie UIImage
- 25. Konwersja NSData do NSString!
- 26. QLPreviewController z NSData?
- 27. Konwersja NSData na base64
- 28. Powtórzenie przez bajty NSData
- 29. Zmień rozmiar UIImage i zmień rozmiar UIImageView
- 30. iOS SecKeyRef do NSData
Tak, to co używam . NSData ma adres, a po wywołaniu UIImaeg -initWithData: theData, punkt staje się 0. Nie jestem pewien, gdzie zobaczyć komunikat o błędzie. – BlueDolphin