我們的應用程序崩潰導入圖像大於8 megapixels
iPhone
。有時內存使用率也很高。應用程序崩潰導入超過800萬像素圖像到uiimageview
通過,我們要導入的方式圖像大於8百萬像素,而不是在使用iPhone
相機拍攝的過於龐大4000 x 3000
(12萬像素).Photos是3264 x 2448
(8百萬像素)。
這裏是我們MEMORY REPORT
進口800萬像素的圖像時
進口12萬像素的圖像時,在存儲器
巨大的差異用法。任何人都知道爲什麼有很大的內存使用差異和解決方案?
(我們將使用圖像進行編輯,過濾,處理等)。
這裏是我們的代碼
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
UIImage *selectedImage=[info objectForKey:UIImagePickerControllerOriginalImage];
//SCALING UIIMAGE
UIImage *scaledImage=[[UIImage alloc]init];
if ((selectedImage.size.width>3264) && (selectedImage.size.height>2448))
{
UIGraphicsBeginImageContextWithOptions(CGSizeMake(selectedImage.size.width/2, selectedImage.size.height/2), NO, 0.0);
NSLog(@" HEIGHT %f",selectedImage.size.height);
NSLog(@" WIDTH %f",selectedImage.size.width);
[selectedImage drawInRect:CGRectMake(0, 0,selectedImage.size.width/2 ,selectedImage.size.height/2)];
scaledImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSLog(@" HEIGHT %f",scaledImage.size.height);
NSLog(@" WIDTH %f",scaledImage.size.width);
VisualEffectImageVIew.image=scaledImage;
BackgroundImageView.image=scaledImage;
ForegroundImageView.image=scaledImage;
}
else
{
VisualEffectImageVIew.image=selectedImage;
BackgroundImageView.image=selectedImage;
ForegroundImageView.image=selectedImage;
}
if(UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPhone)
{
[picker dismissViewControllerAnimated:YES completion:nil];
}
else
{
[popoverController dismissPopoverAnimated:YES];
[self popoverControllerDidDismissPopover:popoverController];
}
}
調整所有圖像的大小將是問題,因爲有些可能會非常小,在這種情況下如何檢查圖像分辨率並調整它們的大小,以便它們使用較少的內存? – USERX2DX
從bundle中加載圖片後,您可以使用NSData獲取imageData.Set UIImage。現在您可以獲取圖片的大小。 –
handleImage.size.width,handleImage.size.height。 :-) –