Я беру фото с AVFoundation как здесь: http://red-glasses.com/index.php/tutorials/ios4-take-photos-with-live-video-preview-using-avfoundation/Как сделать квадратную картинку в iphone с помощью avFoundation, как в приложении Instagram?
Один фрагмент:
[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 делает это (или они обрезают изображения?).
Как я могу определить размер снимка, который будет квадратным? Я знаю, как изменить размер телефона, но если сделанное изображение не квадратное, результат не очень хороший.
Любая идея?
Это единственный способ? Думаю, изображение будет выглядеть хуже, если бы оно было изменено. Можно ли сфотографировать пользовательский размер и не изменять его размер? – DixieFlatline
ни одна камера не может делать снимки разных размеров. Он будет всегда использовать полное разрешение и размер его, если вы используете меньшие изображения. У Instagram также нет другой возможности, кроме того, чтобы вырезать из полного изображения. В этом примере размер '400px', но вы можете увидеть, насколько широким является исходное изображение и сделать прямоугольник с одинаковым размером по высоте. Это приведет к квадратному изображению, и вы потеряете несколько пикселей выше и ниже. –
Масштабирование изображения вниз, предполагая приличную интерполяцию, заставляет его смотреть _better_ не хуже, поэтому ваши опасения необоснованны. – podperson