我有一個應用程序,用戶使用相機拍攝照片,然後選擇使用照片。下面的方法被稱爲:顯示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