Как я могу настроить рамку камеры iPhone - PullRequest
1 голос
/ 11 ноября 2011

Может кто-нибудь, пожалуйста, помогите мне установить кадр камеры на 320X320 кадров. Следует сфотографировать вещи, доступные только в этом кадре. Я уже потратил 2 дня на поиск решения, пожалуйста, помогите мне, если кто-нибудь делал это когда-либо. Пожалуйста и спасибо заранее.

Ответы [ 2 ]

6 голосов
/ 09 января 2013

Вы, возможно, путаете термины, есть два возможных способа интерпретации вашего вопроса. Первый - это то, что у вас полный экран телефона, и вы как-то хотите просто захватить часть экрана.Во-вторых, вы хотите, чтобы полученное изображение имело разрешение источника 320 x 320.

Первое, что вы должны понять, - это способ захвата мультимедиа.

На iPhone есть 4 возможных выхода:

  • AVCaptureMovieFileOutput для вывода в файл фильма
  • AVCaptureVideoDataOutput , если вы хотите обработать кадры из захваченного видео
  • AVCaptureAudioDataOutput , если вы хотите обработать захваченные аудиоданные
  • AVCaptureStillImageOutput , если вы хотите захватить неподвижные изображения с сопровождающими метаданными

Это означает, что вы можете получить что-то только через эти выходы, для своих целей вы можете использовать либо AVCaptureStillImageOutput , либо AVCaptureVideoDataOutput .

Предложения, которые дали другиеВы используете AVCaptureStillImageOutput .Это, наверное, самое простое, что вы должны попробоватьЗдесь вы можете попробовать один из них:

  1. Вы можете взять полный экран и обрезать то, что вы хотите, здесь у вас, вероятно, будет установлено качество для Фото Чтодает вам полноэкранное изображение с самым высоким качеством (например, 2592x1936 для iphone 4).

  2. Вы изменяете качество захвата на Среднее , что позволяет делать снимкис разрешением 480x360 пикселей (на iphone4) и ТАКЖЕ измените размер слоя предварительного просмотра видео до соответствующего размера, чтобы он не выглядел таким пикселизированным для пользователя.Я думаю, что это то, что вы ищете, так как слой предварительного просмотра технически является видом, вы можете показать его где угодно на экране iphone, и так как вы снизили качество ввода, снимки будут сделаны в разрешении, которое выустановлен, поэтому он должен позволять делать снимки намного быстрее и использовать намного меньше памяти.

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

ЧТО-ТО ОЧЕНЬ ВАЖНО: эти предустановки зависят от телефона, они будут меняться в зависимости от текущих характеристик телефона, я не знаю, можете ли вы попросить камеру о предустановке, но я уверен, что вы не можете.

Вы можете увидеть больше об этом в официальной документации Apple.

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

4 голосов
/ 11 января 2013

вы можете использовать cameraOverlayView

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

Возьмите вид 320 * 320 и кнопку на UIViewobject.

действие на кнопку

[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 и обрезать и реализовать в соответствии с вашими потребностями

...