2016-09-12 2 views
0
- (UIImage *)createThumbnailImage:(UIImage *)image withSize:(CGSize)size { 
CGRect imageRect = CGRectMake(0.0, 0.0, size.width, size.height); 
UIGraphicsBeginImageContext(size); 
CGContextRef context = UIGraphicsGetCurrentContext(); 
CGContextClearRect(context, CGRectMake(0, 0, size.width, size.height)); 

CGContextSetInterpolationQuality(context, 0.8); 

[image drawInRect:imageRect blendMode:kCGBlendModeNormal alpha:1]; 

UIImage *thumbnail = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
return thumbnail; 
} 
- (void)viewDidLoad { 
[super viewDidLoad]; 
UIImage *inputImage = [UIImage imageNamed:@"dog.jpg"]; 
UIImage *image = [self createThumbnailImage:inputImage withSize:CGSizeMake(640.0, 480.0)] 
} 

Ich habe ein Vorschaubild (640 * 480) durch den obigen Code. Und ein seltsames Problem hat mich verwirrt.Clipping große Png machen die iOS-App zum Absturz

Als ich ein JPG (10000 * 10000) an die Methode schickte, funktionierte es gut.

Aber wenn ich ein PNG mit der gleichen Größe schickte, würde die App abstürzen.

Ich habe versucht, einige Dokumente über den Unterschied zwischen JPG und PNG zu finden, aber es ergab keinen Sinn.

Hat jemand eine Idee über diesen Fehler?

+0

Sie Absturz iOS, weil Sie zu viel Speicher zuweisen, reduzieren die Größe dieser Bilder vor der Verarbeitung, ist 10000x10000 viel zu groß. – MoDJ

Antwort

0
-(UIImage *)getNeedImageFrom:(UIImage*)image cropRect:(CGRect)rect 
{ 

    CGImageRef subImage = CGImageCreateWithImageInRect(image.CGImage, rect); 
    UIImage *croppedImage = [UIImage imageWithCGImage:subImage]; 
    CGImageRelease(subImage); 
    return croppedImage; 
} 

können Sie bitte überprüfen, ob dies Ihr Problem lösen

+0

Meine Beschreibung kann eine Abweichung haben. Ich möchte die Größe des Bildes ändern und es nicht zuschneiden. Das tut mir leid . Irgendwie, danke für deine Antwort = = – tripleCC