Какой самый быстрый способ создания нового UIImage из преобразований, примененных к существующему UIImage? - PullRequest
1 голос
/ 08 сентября 2010

Я пытаюсь снять изображение, снятое с задней камеры, применить к нему преобразование масштабирования, а затем вывести новое изображение того же размера, что и оригинал, но в увеличенном масштабе.

То, что у меня ниже, работает ... НО медленно (особенно код между UIGraphicsBeginImageContext (size) и UIGraphicsEndImageContext ();)

Есть ли лучший способ сделать это? В частности, способ, который даст тот же результат, но быстрее?

UIImage *tempImage = [[UIImage alloc] initWithData:imageData];

CGImageRef img = [tempImage CGImage];
CGFloat width = CGImageGetWidth(img);
CGFloat height = CGImageGetHeight(img);
CGRect bounds = CGRectMake(0, 0, width, height);
CGSize size = bounds.size;

CGFloat z = 5.0; 
CGAffineTransform xfrm = CGAffineTransformMakeScale(z, z);

UIGraphicsBeginImageContext(size);
CGContextRef currentContext = UIGraphicsGetCurrentContext();
CGContextConcatCTM(currentContext, xfrm);
CGContextDrawImage(currentContext, bounds, img);

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

Спасибо - РГ

1 Ответ

0 голосов
/ 17 сентября 2010

Ответ прост: обрезать, а затем масштабировать

Размер изображения UIImage может быть значительным, особенно при съемке с помощью камеры с качеством «фото», что приводит к снижению производительности при его масштабировании. Поэтому лучше всего сначала обрезать фотографию до необходимого размера И затем масштабировать по мере необходимости.

...