Pergunta

Estou tentando carregar UIImage objeto de NSData, e o código de amostra era para NSImage, Acho que eles deveriam ser os mesmos. Mas agora carregando a imagem, estou me perguntando o que é o melhor para solucionar o UIImage carregando NSData questão.

Foi útil?

Solução

Uiimage tem um -initWithData: método. A partir dos documentos: "Os dados no parâmetro de dados devem ser formatados para corresponder ao formato de arquivo de um dos tipos de imagem suportados do sistema".

Outras dicas

Eu não tentei UIImageJPEGRepresentation() antes, mas UIImagePNGRepresentation funciona bem para mim e conversão entre NSData e UIImage está morto simples:

NSData *imageData = UIImagePNGRepresentation(image);
UIImage *image=[UIImage imageWithData:imageData];

Tente isso para converter uma imagem em nsdata:

UIImage *img = [UIImage imageNamed:@"image.png"];
NSData *data1 = UIImagePNGRepresentation(img);

Thedata deve ser um NSData objeto que já contém os dados. Você precisa fazer o carregamento/download de arquivos para o NSData objeto antes de ser usado. Você pode inspecioná -lo usando NSLog em Thedata e veja se ele contém os dados válidos.

Para execução segura do código, use o bloco if-let com dados, conforme a função uiImagePnGrepresentation retorna, valor opcional.

if let img = UIImage(named: "Hello.png") {
    if let data:Data = UIImagePNGRepresentation(img) {
       // Handle operations with data here...         
    }
}

Observação: Dados é a classe Swift 3. Use dados em vez de nsdata com Swift 3

Operações de imagem genérica (como PNG e 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...
     }
}

Usando extensão:

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...
     }
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top