2017-09-26 2 views
2

J'essaie de faire des coins de l'image mais l'image d'ImageContext est déformée.ImageContext renvoie une image déformée

Voici les étapes que je prends:

- (UIImage *)decodeBase64ToImage:(NSString *)strEncodedData 
{ 
    NSURL *url = [NSURL URLWithString:strEncodedData]; 
    NSData* data = [[NSData alloc] initWithContentsOfURL:url]; 
    UIImage* image = [[UIImage alloc] initWithData:data]; 
    UIImage* croppedImage = [self makeRoundedImage:image]; 
    return croppedImage; 
} 

- (UIImage *)makeRoundedImage:(UIImage *) image 
{ 

    CGRect frame = CGRectMake(0, 0, image.size.width, image.size.height); 

    UIGraphicsBeginImageContext(frame.size); 
    //[[UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, image.size.width, image.size.height) cornerRadius:10.0] addClip]; 
    [image drawInRect:frame]; 

    // Get the image 
    UIImage *croppedImage = UIGraphicsGetImageFromCurrentImageContext(); 

    // Lets forget about that we were drawing 
    UIGraphicsEndImageContext(); 

    return croppedImage; 
} 
+0

Je pense pas besoin faire coins de la UIImage . Vous devez faire des coins de l'UIImageView. –

+0

@YogendraGirase Je ne peux pas utiliser UIImageView, je dois l'utiliser dans un framework qui ne fonctionne qu'avec UIImage. –

+0

Vous pouvez vérifier ci-dessous ma réponse.Il peut vous être utile –

Répondre

0

Vous pouvez vérifier cette méthode

-(UIImage *)roundedImage:(UIImage *) roundImage 
         radius: (float) radius; 
{ 
    CALayer *imageLayer = [CALayer layer]; 
    imageLayer.frame = CGRectMake(0, 0, roundImage.size.width, roundImage.size.height); 
    imageLayer.contents = (id) roundImage.CGImage; 

    imageLayer.masksToBounds = YES; 
    imageLayer.cornerRadius = radius; 

    UIGraphicsBeginImageContext(roundImage.size); 
    [imageLayer renderInContext:UIGraphicsGetCurrentContext()]; 
    UIImage *finalRoundedImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    return finalRoundedImage; 
} 
0

essayer.

-(UIImage *)imageWithRoundedCorner:(float)cornerRadius Image:(UIImage *)realImage 
{ 
    UIImageView *imageView = [[UIImageView alloc] initWithImage:realImage]; 
    UIGraphicsBeginImageContextWithOptions(imageView.bounds.size, NO, 1.0); 
    [[UIBezierPath bezierPathWithRoundedRect:imageView.bounds cornerRadius:cornerRadius] addClip]; 
    [realImage drawInRect:imageView.bounds]; 
    imageView.image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return imageView.image; 
} 
0

Essayez ceci., Il résoudre le problème de distorsion de l'image ..

- (UIImage *)makeRoundedImage:(UIImage *) image 
{ 

    CGRect frame = CGRectMake(0, 0, image.size.width, image.size.height); 

UIGraphicsBeginImageContextWithOptions(frame.size, NO, 0); 
    //[[UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, image.size.width, image.size.height) cornerRadius:10.0] addClip]; 
    [image drawInRect:frame]; 

    // Get the image 
    UIImage *croppedImage = UIGraphicsGetImageFromCurrentImageContext(); 

    // Lets forget about that we were drawing 
    UIGraphicsEndImageContext(); 

    return croppedImage; 
} 
+0

J'ai trouvé le problème, mon autre framework n'acceptait pas UIImage directement depuis ImageContext, donc j'ai dû le convertir en PNG Representation et puis ça a marché, mais merci! –