2009-09-04 12 views
5

Sto provando a scattare una schermata della vista corrente della mia app e salvarla nell'album fotografico (per poi essere inviata via email o MMS).UIImageWriteToSavedPhotosAlbum salva in dimensioni e qualità errate

UIGraphicsBeginImageContext(self.view.bounds.size); 

[self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; 

UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); 

UIGraphicsEndImageContext(); 

UIImageWriteToSavedPhotosAlbum(viewImage, self, @selector(savedPhotoImage:didFinishSavingWithError:contextInfo:), nil); 

Questo funziona, ma l'immagine risultante apears ad essere più grandi (533x800px) e fortemente compresso quando mi e-mail dalla libreria di foto.

Ho provato prima a scrivere UIImage su file e quindi a salvare su album ma ho ancora lo stesso problema.

Se ho utilizzato la funzionalità di screenshot integrata nell'iPhone, la vista viene salvata correttamente nell'album fotografico 320x480 ma il codice sopra riportato sembra salvare un'immagine più grande per qualche motivo?

Grazie!

+0

Devo aggiungere che ciò si verifica solo durante il test sul dispositivo. Tutto sembra a posto sul simulatore. – wuwongy

risposta

1

Ho avuto lo stesso errore, da parte mia, che è stato risolto quando ho arrotondato i punti decimali per essere la stessa scala dell'iPhone, provalo, assicurati che la scala sia 1.0, 2.0, ecc. E non 3.1, che lo butterò via.

19

Ho trovato una soluzione decente, che è essenzialmente di riavvolgere il UIImage come PNG, quindi salvare la versione riavvolta. Il codice è simile al seguente:

UIImage* im = [UIImage imageWithCGImage:myCGRef]; // make image from CGRef 
NSData* imdata = UIImagePNGRepresentation (im); // get PNG representation 
UIImage* im2 = [UIImage imageWithData:imdata]; // wrap UIImage around PNG representation 
UIImageWriteToSavedPhotosAlbum(im2, nil, nil, nil); // save to photo album 
+1

Questa è la soluzione al problema di compressione. Le immagini verranno memorizzate come PNG nella libreria fotografica. Provalo inviando un'e-mail all'immagine dopo che è nella tua libreria di foto. –

Problemi correlati