我正在尝试拍摄从后置摄像头拍摄的图像,对其应用缩放变换,然后输出与原始尺寸相同但放大的新图像。
我下面的内容有效...... 但它很慢(尤其是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();
谢谢 - wg
答案 0 :(得分:0)
答案很简单:裁剪然后缩放
UIImage的大小可能相当大,特别是当通过相机以“照片”质量捕获时,在缩放时会导致性能不佳。因此,最佳做法是首先将照片裁剪为所需尺寸,然后根据需要进行缩放。