У меня есть приложение, в котором пользователь снимает фотографию с помощью камеры, а затем выбирает использовать фотографию. Следующий метод называется:Показан HUD, пока изображение уменьшено размером
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
В рамках этого метода я проверить NSData
длину изображения и размер фактического изображения, если данные (Kb) размер слишком велик, то проверьте еще раз. Таким образом, я уменьшаю только небольшие количества, чтобы сохранить изображение самого высокого качества/размера, а не конкретный размер w/h.
Вопрос Я пытаюсь отобразить HUD для пользователя, пока происходит «масштабирование изображения». HUD не показывает в данный момент, это то, что я пробовал.
// Check if the image size is too large
if ((imageData.length/1024) >= 1024) {
MBProgressHUD *HUD = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
HUD.dimBackground = YES;
HUD.labelText = NSLocalizedString(@"HUDHomeLoadingTableData", @"Home View Controller - Loading Table Data");
HUD.removeFromSuperViewOnHide = YES;
while ((imageData.length/1024) >= 1024) {
NSLog(@"While start - The imagedata size is currently: %f KB",roundf((imageData.length/1024)));
// While the imageData is too large scale down the image
// Get the current image size
CGSize currentSize = CGSizeMake(image.size.width, image.size.height);
// Resize the image
image = [image resizedImage:CGSizeMake(roundf(((currentSize.width/100)*80)), roundf(((currentSize.height/100)*80))) interpolationQuality:kMESImageQuality];
// Pass the NSData out again
imageData = UIImageJPEGRepresentation(image, kMESImageQuality);
}
[HUD hide:YES];
}
Я добавляю HUD в self.view, но это не отображается? Должен ли я, возможно, подумать и о потоковом использовании, если масштабирование изображения будет завершено в фоновом потоке и обновлениях HUD на главном. Я не уверен, когда нужно определить, должны ли определенные части быть на разных потоках?
Если вы используете 'performSelectorInBackground', я считаю, что вы должны определить' @ autoreleasepool' для этого нового потока. – Rob