Ho un limite di upload di 2 MB con le mie immagini. Quindi, se un utente prova a caricare un'immagine più grande di 2 MB, vorrei ridurne le dimensioni senza ridurre la risoluzione.
Come ci riesco? Ho provato qualcosa del genere ma non ha funzionato:
var fileSize = UIImageJPEGRepresentation(image, 1)!.length
print("before File size:")
print(fileSize)
while fileSize > MyConstants.MAX_ATTACHMENT_SIZE{
let mydata = UIImageJPEGRepresentation(image, 0.75)
fileSize = mydata!.length
image = UIImage(data: mydata!)!
print("make smaller (fileSize)")
}
print("after File size:")
print(UIImageJPEGRepresentation(image, 1)!.length)
produzione:
before File size:
2298429
make smaller 846683
after File size:
2737491
risposte:
-1 per risposta № 1Come ha detto @Lion, dovrai giocare con la qualità per ottenere una dimensione del file piacevole. Ho notato tuttavia che:
print(UIImageJPEGRepresentation(image, 1)!.length)
Stampa la lunghezza dell'immagine alla massima qualità. Questo è fuorviante poiché all'interno della condizione while, si stanno ottenendo dimensioni di file inferiori.
while fileSize > MyConstants.MAX_ATTACHMENT_SIZE{
let mydata = UIImageJPEGRepresentation(image, 0.75)
fileSize = mydata!.length
image = UIImage(data: mydata!)!
print("make smaller (fileSize)")
}
-1 per risposta № 2
let mydata = UIImageJPEGRepresentation(image, 0.75)
fileSize = mydata!.length
image = UIImage(data: mydata!)!
Questo è l'approccio giusto. È possibile impostare una scala diversa da 0.1 to 1
che quanto vuoi ridurre la qualità e le dimensioni dell'immagine.
print(UIImageJPEGRepresentation(image, 1)!.length)
questa riga aumenta nuovamente la qualità e le dimensioni o la risoluzione dell'immagine al massimo (because scale = 1)