Konwertuj UIImage na NSData i konwertuj z powrotem do UIImage w Swift?
Próbuję zapisać UIImage
na NSData
, a następnie odczytać NSData
z powrotem do nowego UIImage
w języku Swift. Aby przekonwertować UIImage
na NSData
używam następującego kodu:
let imageData: NSData = UIImagePNGRepresentation(myImage)
Jak przekonwertować imageData
(tj. NSData
) z powrotem na Nowy UIImage
?
6 answers
UIImage(data:imageData,scale:1.0)
zakładając, że skala obrazu wynosi 1.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-30 14:43:40
Dzięki. Bardzo mi pomógł. Konwersja na Swift 3 i praca
Aby zapisać: let data = UIImagePNGRepresentation(image)
Do załadowania: let image = UIImage(data: data)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-16 03:54:40
Użycie imageWithData:
metoda, która jest tłumaczona na Swift jako UIImage(data:)
let image : UIImage = UIImage(data: imageData)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-30 14:44:51
Aby zapisać jako DANE:
Z StoryBoard, jeśli chcesz zapisać dane "obrazu" na imageView MainStoryBoard, następujące Kody będą działać.
let image = UIImagePNGRepresentation(imageView.image!) as NSData?
Aby załadować "image" do imageView: Spójrz na wykrzyknik"!", "?"dokładnie, czy to jest dokładnie to samo, co to.
imageView.image = UIImage(data: image as! Data)
Typ " NSData "jest automatycznie konwertowany na typ" Data " podczas tego procesu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-20 14:23:24
Teraz w Swift 4.2 możesz użyć pngData()
nowej metody instancji UIImage
, Aby pobrać dane z obrazu
let profileImage = UIImage(named:"profile")!
let imageData = profileImage.pngData()
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-06 21:09:53
Aby bezpiecznie wykonać kod, użyj if-let
bloku z Data
, Aby zapobiec awarii aplikacji&, ponieważ funkcja UIImagePNGRepresentation
zwraca opcjonalną wartość.
if let img = UIImage(named: "TestImage.png") {
if let data:Data = UIImagePNGRepresentation(img) {
// Handle operations with data here...
}
}
Uwaga: Dane to klasa Swift 3+. Użyj danych zamiast NSData z Swift 3 +
Ogólne operacje na obrazach (jak png i jpg):
if let img = UIImage(named: "TestImage.png") { //UIImage(named: "TestImage.jpg")
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...
}
}
Za pomocą rozszerzenia:
extension UIImage {
var pngRepresentationData: Data? {
return UIImagePNGRepresentation(self)
}
var jpegRepresentationData: Data? {
return UIImageJPEGRepresentation(self, 1.0)
}
}
*******
if let img = UIImage(named: "TestImage.png") { //UIImage(named: "TestImage.jpg")
if let data = img.pngRepresentationData {
handleOperationWithData(data: data)
} else if let data = img.jpegRepresentationData {
handleOperationWithData(data: data)
}
}
*******
func handleOperationWithData(data: Data) {
// Handle operations with data here...
if let image = UIImage(data: data) {
// Use image...
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-21 04:32:00