Eu posso criar UIImage
a partir de NSData
usar [UIImage imageWithData:]
ou[UIImage initWithData:]
métodos.
Eu me pergunto se posso obter o NSData
retorno de um existente UIImage
? Algo na linha deNSData *myData = [myImage getData];
cocoa-touch
uiimage
nsdata
Eugene
fonte
fonte
UIImageJPEGRepresentation
ouUIImagePNGRepresentation
irá alterar os dados e fazer uma reconversão. Existe alguma maneira de realmente alcançar o que foi pedido?Ao inicializar um
UIImage
objeto cominit(data: originalData)
, queoriginalData
será convertido em dados brutos em algum tipo de formato interno. Esses dados podem ser recuperados posteriormente comNo entanto, como o
rawData
é cru, será ainda maior do que quando usadoUIImagePNGRepresentation
.fonte
Você pode esperar que um UIImage seja um objeto formatado para exibição e, portanto, não estará usando os dados originais (que provavelmente estão no formato PNG ou JPEG), mas mais provavelmente uma matriz de pixels ou algum outro formato interno. Em outras palavras,
UIImage(data: foo)
não reteráfoo
.Se você quiser apenas usá-lo em outro lugar em seu programa, o UIImage original funcionará bem (presumo que não seja o caso aqui)
Se você quiser serializar,
UIImagePNGRepresentation(...)
funcionará, mas ficará superdimensionado se o original for JPEG;UIImageJPEGRepresentation(...)
frequentemente resultará em dados um pouco maiores e com perdas se o original for PNG. Não há problema em escolher um com base na forma como a imagem será exibida e no formato que você espera que seja fornecido. Se acontecer de você estar usando PNG e quiser sair do PNG, você deve obter um bom tamanho de arquivo e dados quase idênticos, pedaços especiais de PNG à parte.Se você deseja obter uma cópia exata dos dados originais (talvez para salvar um arquivo após a miniatura ou para SHA1), você precisa mantê-lo separadamente. Você pode fazer algo como:
fonte
Só porque me deparei com isso e gosto do Swift :)
Aqui está a tradução rápida do post de Caroiline.
Ou
fonte
Swift 4.2
fonte
As coisas mudaram desde que a resposta acima foi dada, para aqueles que ainda procuram, porque compartilham da preocupação da CipherCom: o iOS 5 adicionou a propriedade CIImage .
fonte
CIImage
só é definida se foi inicializada comimageWithCIImage:
. Também não são diretamente os dados usados, mas sim outro objeto de representação de imagem.