gpt4 book ai didi

iphone - 如何在 iPhone 中使用 avFoundation 拍摄方形照片,就像在 Instagram 应用程序中一样?

转载 作者:行者123 更新时间:2023-12-03 18:32:43 24 4
gpt4 key购买 nike

我正在使用 AVFoundation 拍照,如下所示: http://red-glasses.com/index.php/tutorials/ios4-take-photos-with-live-video-preview-using-avfoundation/

一个片段:

[stillImageOutput captureStillImageAsynchronouslyFromConnection:videoConnection completionHandler: ^(CMSampleBufferRef imageSampleBuffer, NSError *error)
{
CFDictionaryRef exifAttachments = CMGetAttachment( imageSampleBuffer, kCGImagePropertyExifDictionary, NULL);
if (exifAttachments)
{
// Do something with the attachments.
NSLog(@"attachements: %@", exifAttachments);
}
else
NSLog(@"no attachments");

NSData *imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageSampleBuffer];
UIImage *image = [[UIImage alloc] initWithData:imageData];

据我所知,图片大小设置在这里:

   AVCaptureSession *session = [[AVCaptureSession alloc] init];  
session.sessionPreset =AVCaptureSessionPresetMedium; //medium on my iphone4 is 640*480

但这里只能进行一些设置,并且无法设置为自定义尺寸。

如果可能的话,我希望拍摄的照片具有 1:1 的宽高比,例如 400x400 像素(方形图片)。看来 Instagram 正在这样做(或者他们正在裁剪图像?)。

如何将拍摄的照片尺寸指定为正方形?我知道如何在手机上改变尺寸,但是如果拍摄的照片不是方形的,结果就不好。

有什么想法吗?

最佳答案

您可能应该通过创建新上下文来调整 UIImage 的大小。下面的例子

.....
UIImage *image = [[UIImage alloc] initWithData:imageData];
UIImage *tempImage = nil;
CGSize targetSize = CGSizeMake(400,400);
UIGraphicsBeginImageContext(targetSize);

CGRect thumbnailRect = CGRectMake(0, 0, 0, 0);
thumbnailRect.origin = CGPointMake(0.0,0.0);
thumbnailRect.size.width  = targetSize.width;
thumbnailRect.size.height = targetSize.height;

[image drawInRect:thumbnailRect];

tempImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

// tmpImage is resized to 400x400

希望这有帮助!

关于iphone - 如何在 iPhone 中使用 avFoundation 拍摄方形照片,就像在 Instagram 应用程序中一样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10929481/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com