2014-10-12 15 views
17

Vorrei applicare un filtro a una foto dalla libreria dell'utente e quindi scriverlo su disco. Sto usando UIImageJPEGRepresentation. Questa funzione richiede un valore UIImage e un valore compressionQuality compreso tra 0,0 e 1,0. Perché voglio preservare la qualità originale, l'ho impostato su 1.0. Ma ho scoperto che in realtà questo crea un file di immagine che è più grande nelle dimensioni del file rispetto all'originale, anche un po 'significativamente più grande. Ho notato che nell'app di esempio di Apple Photo Editing Extension è stata impostata la qualità a 0,9. L'ho provato e restituisce una dimensione del file vicina alla dimensione del file fotografico originale. Questo non ha senso per me. Qualcuno può spiegarlo? È appropriato usare sempre 0,9? La fotocamera iOS lo comprime usando quel valore e quindi 0,9 è la qualità originale? O perché non è 0.9 in realtà 1.0, se non c'è niente che sia di migliore qualità?Che cosa dovrebbe essere compressionuality quando si utilizza UIImageJPEGRepresentation?

NSData *renderedJPEGData = UIImageJPEGRepresentation(image, 0.9f); 
+1

0,9 causerà una perdita di qualità dell'immagine: è applicato un certo livello di compressione, pertanto si perdono i dati. Se è necessario preservare la qualità originale, utilizzare UIImagePNGRepresentation. JPG è un formato lossy. L'uso di PNG determinerà una dimensione di file più grande, ma i risultati salvati avranno la stessa qualità dell'immagine di input. – rickerbh

+0

@rickerbh Ma le foto scattate con la fotocamera dell'iPhone vengono emesse come JPEG non in PNG – Joey

+1

Sure. Ma se vuoi mantenere la stessa qualità non dovresti ricodificare l'immagine con un formato lossy. Se sei soddisfatto di una perdita di qualità (che in genere non viene notata dagli umani che visualizzano l'immagine), usa JPG. Di solito uso un valore come 0.7 perché trovo che di solito risulta in un'immagine che non è terribile, ma di solito dà un buon risparmio di dimensioni del file. Se vuoi vedere di più sulla ricompressione, consulta la sezione "Ricompressione" all'indirizzo http://www.ampsoft.net/webdesign-l/jpeg-compression.html – rickerbh

risposta

0

È possibile convertire l'immagine in rappresentazione PNG per la qualità dell'immagine originale.

+1

non voglio usare UIImagePNGRepresentation e voglio usare su UIImageJPEGRepresentation :) –