2016-09-12 11 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)] 
} 

Я получил уменьшенное изображение (640 * 480) по коду выше. И какая-то странная проблема смутила меня.Обрезание большого png делает крушение приложения ios

Когда я отправил jpg (10000 * 10000) в метод, он работал хорошо.

Но когда я отправил png с таким же размером, приложение будет разбиваться.

Я попытался найти документы о различии между jpg и png, но это не имело смысла.

Есть ли у кого-нибудь идеи об этой ошибке?

+0

Вы врезаться IOS, потому что выделить слишком много памяти, уменьшить размер этих изображений перед их обработкой, 10000x10000 является слишком большим. – MoDJ

ответ

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

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

Пожалуйста, вы можете проверить, если это решить вашу проблему

+0

Мое описание может иметь некоторые отклонения. Я хочу изменить размер изображения, а не обрезать его. Я прошу прощения за это . В любом случае, спасибо за ваш ответ = = – tripleCC