2012-10-19 18 views
5

Come posso ottenere un URL da UIImage? Ho un'immagine dalla libreria di iPhone e la ridimensiono e non voglio salvare la nuova immagine ma voglio ottenerla.Come ottenere l'URL da UIImage

+0

Probabilmente dovrai espandere un po 'quello che vuoi, stai chiedendo un nuovo percorso per l'immagine, il vecchio percorso per l'immagine o qualcos'altro. L'unico URL che potrebbe essere associato a una UIImage è un URL del filesystem che punta a dove esiste sul disco. – Bergasms

+0

Voglio l'url della nuova immagine –

risposta

6

UIImage non ha URL o informazioni sul file. È solo una raccolta di byte che rappresentano i dati dei colori dei pixel. Se si ottiene UIImage da UIImagePicker, è possibile ottenere l'URL dall'immagine originale nella libreria degli asset. Ma devi ottenere questo URL nel metodo di delega di selezione immagini e devi tenerne traccia separatamente dall'oggetto UIImage.

Modifica - in base al commento dell'OP, questa non è l'informazione richiesta.

+1

quindi se voglio ottenere l'url allora devo salvarlo da qualche parte e poi posso ottenere l'url? –

+0

La tua domanda è ancora abbastanza vaga. Stai parlando di un URL di un'immagine che è stata modificata o ridimensionata. Se stai facendo questo con un UIImage, non c'è nessun URL per questa nuova immagine. Hai solo un'immagine in memoria. – rmaddy

+0

Se l'immagine esiste, deve esserci un percorso associato e quindi l'url .. –

4

Quello che stai cercando è il parametro UIImagePickerControllerReferenceURL fornito dal callback del delegato nel dizionario delle informazioni. Quello che dovete fare è:

NSURL* imageURL = [info objectForKey:UIImagePickerControllerReferenceURL]; 

E sarebbe simile a questa:

assets-library://asset/asset.JPG?id=SOME_GUUID&ext=JPG 

è possibile utilizzare quest'ultimo per fare riferimento alla stessa immagine che hai nel UIImage* nella callback.

0

È possibile creare sottoclasse UIImage e creare un override di initWithURL: per salvare l'URL in una proprietà creata ... qualcosa di simile.

+ (id) initWithURL:(NSURL*)url 
{ 
    [super initWithURL:url]; 
    self.url = url; 
} 
9

Tu dici che non vuoi salvarlo, ma se avete bisogno di un URL per un UIImage, si può facilmente salvare una copia temporanea per ottenere l'URL di cui avete bisogno.

// Create a URL in the /tmp directory 
guard let imageURL = NSURL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent("TempImage.png") else { 
    return 
} 

// save image to URL 
do { 
    try UIImagePNGRepresentation(myImage)?.write(to: imageURL) 
} catch { } 

Ora è possibile utilizzare l'URL per condividere l'immagine sui social media o qualsiasi altra cosa si debba fare con esso.

Vedere here per ulteriori informazioni.

+1

LIFE SAVER !!!!! – Pentarex