2010-04-16 4 views
2

Ok, donc je prends une capture d'écran d'une photo que j'ai prise avec mon appareil photo sur l'iPhone. Je mets la photo de la caméra dans UIImageView et prenez une capture d'écran à l'aide de ce genre de code (c'est de http://www.skylarcantu.com/blog/2009/10/16/saving-a-view-as-an-image/) ...UIGraphicsGetImageFromCurrentImageContext donne une image de mauvaise qualité/basse résolution, comment puis-je aller mieux?

- (void)takeScreenshot { 

    UIWindow *theScreen = [[UIApplication sharedApplication].windows objectAtIndex:0];  
    UIGraphicsBeginImageContext(theScreen.frame.size); 
    [[theScreen layer] renderInContext:UIGraphicsGetCurrentContext()]; 
    UIImage *screenshot = UIGraphicsGetImageFromCurrentImageContext();  
    UIGraphicsEndImageContext();    
    [self doSomethingWith:screenshot]; 
} 

Je l'ai travaillé comme je veux, mais la qualité d'image de la capture d'écran est beaucoup pire que l'image que je prends avec mon appareil photo. Y a-t-il un moyen de surmonter cela? Je suppose que c'est parce que cela prend une capture d'écran qui capture la résolution de l'écran de l'iPhone plutôt que la résolution de l'appareil photo - peut-être ?!

Toutes les suggestions seraient grandes :-)

Répondre

1

Vous avez tout à fait raison. La résolution de l'écran (320 x 480) est bien inférieure à celle de l'appareil photo (1200 x 1600 sur 3G, 1536 x 2048 sur le 3GS), donc votre UIImageView doit être 320x480, et il sous-échantillonnera automatiquement votre image. Cela semble alambiqué, cependant - vous avez déjà la photo comme un UIImage à la plus haute résolution - essayez-vous de superposer des choses sur elle ou quelque chose?

+0

Ouais c'est exactement exact, puis-je superposer quelque chose sans perdre la résolution? – user157733

+1

Non, j'ai peur que ce soit plus compliqué. Vous devrez appeler UIGraphicsBeginImageContext() avec la taille de l'image de votre caméra d'origine, faire le drawAtPoint, puis dessiner d'autres choses dans le même contexte. Ensuite, vous appellerez UIGraphicsGetImageFromCurrentImageContext() pour obtenir une nouvelle image composite. –

+0

Ok merci pour les heads-up, je vais regarder dans ça. Ces choses ne sont jamais aussi faciles que je le pense! – user157733

Questions connexes