如何自定义iPhone的相机框架

时间:2011-11-11 11:49:39

标签: iphone objective-c iphone-4

任何人都可以帮我将摄像机的框架设置为320X320框架。它应该只拍摄那个框架中可用的东西。我已经花了两天时间找到解决方案,请帮助我,如果有人做过的话。请提前和感谢。

2 个答案:

答案 0 :(得分:6)

您可能会混淆这些条款,有两种方法可以解释您的问题,第一种方法是您拥有手机的全屏尺寸,并且您想要以某种方式捕获屏幕的一部分。第二,您希望拍摄的照片具有320 x 320的源分辨率。

首先要了解的是媒体如何捕获。

在iPhone上有4种可能的输出:

  • AVCaptureMovieFileOutput 输出到电影文件
  • AVCaptureVideoDataOutput ,如果您要处理视频中的帧 被抓获
  • AVCaptureAudioDataOutput 如果你想处理的话 正在捕获的音频数据
  • AVCaptureStillImageOutput 如果您愿意的话 捕获包含元数据的静止图像

这意味着您只能通过这些输出得到一些东西,为了您的目的,您可以使用 AVCaptureStillImageOutput AVCaptureVideoDataOutput

其他人给你的建议使用 AVCaptureStillImageOutput 。这可能是你应该尝试的最简单的。在这里你可以试试其中一个:

  1. 你可以拍摄全屏,剪裁你想要的照片 可能具有照片的质量设置,为您提供全面的服务 具有最高质量的屏幕图像(适用于iphone 4的2592x1936) 例如)。

  2. 您可以将捕获质量更改为中等,这将拍照 具有480x360像素(在iphone4上)并且还调整了视频大小 预览图层到适当大小的东西,以便它不会 为用户看起来像素化。我认为这是你正在寻找的,因为预览层在技术上是一个视图,你可以在iPhone屏幕上的任何地方显示它,并且由于你降低了输入的质量,图片将以你的分辨率拍摄设置,所以它应该允许更快速地拍摄图片并使用更少的内存。

  3. 现在还有另一条路径,你可以直接处理 AVCaptureVideoDataOutput 视频输入的帧,这个有点复杂,因为你必须设置你的委托接收框架你想要的质量并获得你想要的分辨率,然后处理这个框架,以便它可以使用。

    非常重要的是,这些预设取决于手机,它们会根据手机电流规格而改变,我不知道你是否可以要求相机提供自定义预设,但我相信你不能。

    您可以在官方Apple文档中看到更多相关信息。

    http://developer.apple.com/library/ios/#documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/04_MediaCapture.html#//apple_ref/doc/uid/TP40010188-CH5-SW2

答案 1 :(得分:4)

你可以使用cameraOverlayView

imagePicker.showCameraControls = NO;
imagePicker.cameraOverlayView = UIViewobject;

在UIViewobject上获取320 * 320视图和一个按钮。

按钮上的操作

[imagePicker takePicture];

并在- (void)imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary *)info中使用此

剪切图像
CGImageRef cgCropped = CGImageCreateWithImageInRect(cgOriginal, 
<frame of 320*320 view> ); 
// cgOriginal is CGImageRef of image [info objectForKey:UIImagePickerControllerOriginalImage] 
if (cgCropped) { 
    UIImage *newImage = [UIImage imageWithCGImage:cgCropped]; 
    CGImageRelease(cgCropped); 
    return newImage; 
}

您可以找到有关cameraOverlayView和crop的更多详细信息,并根据您的需要实施