iPhone: как изменить качество фото камеры - PullRequest
1 голос
/ 27 августа 2010

Я нигде не нашел ответа на этот вопрос, но это похоже на типичную проблему: Я снимаю фотографии с iPhone 4, и мне нужно отправить эти фотографии на сервер через POST-запрос, но сервер не принимает изображения, размер которых превышает 0,5 МБ, поэтому я должен сжать изображения, прежде чем я Отправить их. Чтобы достичь этого, я вызываю следующий метод: «NSData * imageData = UIImageJPEGRepresentation (tempImage, 0.7);», что означает: я скомпилирую данные изображения, и это занимает много времени (около 10 с / рис.).

Можно ли каким-либо образом контролировать качество устройства камеры, чтобы делать снимки низкого качества?

Заранее спасибо за помощь.

1 Ответ

3 голосов
/ 15 сентября 2010

Все, что блокирует основной поток, должно выполняться в фоновом потоке, включая преобразование изображения в JPEG. Таким образом, вы должны начать преобразование JPEG с помощью executeSelectorInBackground: withObject: и, когда преобразование выполнено, передать полученный объект NSData обратно в основной поток.

- (void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info {
    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
    [self dismissModalViewControllerAnimated:YES];
    [self performSelectorInBackground:@selector(encodePhotoInBackground:) withObject:image];
}

- (void)encodePhotoInBackground:(UIImage*)image {
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    NSData *imageData = UIImageJPEGRepresentation(image, 0.60);

    [self performSelectorOnMainThread:@selector(saveImageData:) withObject:imageData waitUntilDone:NO];

    [pool release];
}

- (void)saveImageData:(NSData*)imageData {
    // Do something with the image
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...