0

Voici mon code:Partager une image haute résolution

- (void)shareButtonTapped 
{ 
    CGSize newImageSize = CGSizeMake(850.0, 850.0); 
    UIGraphicsBeginImageContextWithOptions(newImageSize, YES, _aImageView.image.scale); 
    [self.aImageView.layer renderInContext:UIGraphicsGetCurrentContext()]; 
    [self.aImageView.image drawInRect:CGRectMake(0, 0, newImageSize.width, newImageSize.height)]; 
    UIImage * image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    // UIActivityViewController code here 
} 

En ce moment, si je tape sur le bouton Mail, par exemple, l'image est le newImageSize, mais mon _aImageView.image n'est affiché en haut à gauche coin tandis que le reste de l'image est noir uni.

Comment puis-je modifier ce code pour redimensionner l'image au format 850 x 850 ou à une résolution élevée afin qu'elle soit nette lorsqu'elle est partagée par e-mail ou via les médias sociaux?

Merci!

EDIT *

toujours bloqué. J'ai l'impression d'être presque là.

Voici mon nouveau code:

- (void)shareButtonTapped 
{ 
     _topBarImageView.hidden = YES; 
     _bottomBarImageView.hidden = YES; 

     CGSize newImageSize = CGSizeMake(600.0, 600.0); 
     UIGraphicsBeginImageContextWithOptions(newImageSize, YES, _aImageView.image.scale); 
     [_aImageView.layer = renderInContext:UIGraphicsGetCurrentContext()]; 
     [_aLabel drawTextInRect:CGRectMake(20, 250, 280, 140)]; 
     UIImage * image = UIGraphicsGetImageFromCurrentImageContext(); 
     UIImage * newImage = [UIImage imageWithImage:image scaledToSize:newImageSize]; 
     UIGraphicsEndImageContext(); 

     _topBarImageView.hidden = NO; 
     _bottomBarImageView.hidden = NO; 

     // Share Code 
} 

Je me cache quelques imageViews personnalisés qui sont sur cet écran. La seule chose que je veux partager est l'aImageView et l'aLabel.

À l'heure actuelle, lorsque j'ouvre mon email par exemple, je peux voir la nouvelleImageSize, mais la majorité de la boîte est toujours noire. Je n'arrive toujours pas à comprendre ce qui me manque.

+0

Je trouve cette catégorie très pratique pour le redimensionnement : https://github.com/AliSoftware/UIImage-Resize –

Répondre

0

S'il vous plaît essayer ci-dessous le code:

+ (UIImage*)imageWithImage:(UIImage*)image 
       scaledToSize:(CGSize)newSize; 
{ 
    UIGraphicsBeginImageContext(newSize); 
    [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)]; 
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    return newImage; 
} 

indiquer votre nouvelle taille (850850) et passer votre image originale, mais assurez-vous que votre hauteur et largeur de l'image d'origine devrait être le même que le rapport d'image convertie.

espère que ça fonctionne pour you.Thanks

EDIT:

pour la capture d'écran de votre point de vue suivre ci-dessous le code:

- (UIImage*)captureView:(UIView *)yourView { 
    CGRect rect = [[UIScreen mainScreen] bounds]; 
    UIGraphicsBeginImageContext(rect.size); 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    [yourView.layer renderInContext:context]; 
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return image; 
} 
+0

Merci. Comment utiliser cette méthode et également enregistrer tous les éléments supplémentaires qui sont avec l'image, comme un UILabel? –

+0

Si elles sont des sous-vues de votreVue, elles devraient automatiquement s'afficher dans le contexte graphique. Si ce ne sont pas des sous-vues, rendez simplement leurs couches dans le contexte après avoir rendu votre image. S'ils ne sont pas des frères et sœurs directs de yourView, vous devrez peut-être transformer votre contexte pour qu'ils dessinent au bon endroit. –

Questions connexes