2017-08-22 12 views
2

画像が大きすぎるため、拡張機能がクラッシュするため、システムフォトライブラリで自分のアクション拡張を開きます。どのように画像を小さくできますか?iOSアクション拡張画像を取得する方法

この次のコードを使用しようとしましたが、動作しません。

NSDictionary * dict [email protected]{NSItemProviderPreferredImageSizeKey:[NSValue valueWithCGSize:CGSizeMake(300, 300)]}; 
[itemProvider loadItemForTypeIdentifier:(NSString *)kUTTypeImage options:dict completionHandler:^(UIImage *image, NSError *error) { 

}]; 
+0

チェック画像サイズを選択した後ので、必要サイズを減らす場合ので、あなたはこれを推測していることは問題であるならば、それは上記の場合には、あなたを助けるかもしれ –

+0

イメージをロードするときにクラッシュするので、イメージを減らす機会はありません。 ... – Tolecen

答えて

0

イメージビューにイメージをロードする前に。最初にサイズを変更します。次に、サイズ変更した画像をimageViewにロードします。

UIImage *img = [UIImage imageWithData:selectedImgdata]; 
selectedImage = [self resizeImage:img]; 

リサイズ画像データ:

-(UIImage *)resizeImage :(UIImage *)theImage 
{ 
    if((theImage.size.width > 1024 && theImage.size.height > 768) || (theImage.size.width > 768 && theImage.size.height > 1024) || (theImage.size.width > 1024 && theImage.size.height < 768) || (theImage.size.height > 1024 && theImage.size.width < 768)) 
    { 
     float newHeight,newWidth,oldWidth,oldHeight,scaleFactor; 

     if(theImage.size.width > theImage.size.height) 
     { 
      oldWidth = theImage.size.width; 
      scaleFactor = 1024/oldWidth; 

      newHeight = theImage.size.height * scaleFactor; 
      newWidth = oldWidth * scaleFactor; 
     } 
     else 
     { 
      oldHeight = theImage.size.height; 
      scaleFactor = 1024/oldHeight; 

      newWidth = theImage.size.width * scaleFactor; 
      newHeight = oldHeight * scaleFactor; 
     } 

     UIGraphicsBeginImageContextWithOptions(CGSizeMake(newWidth, newHeight), NO, 1.0); 
     [theImage drawInRect:CGRectMake(0, 0, newWidth, newHeight)]; 
     UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 
     UIGraphicsEndImageContext(); 
     return newImage; 
    } 
    return theImage; 
} 
+2

イメージが読み込まれる前にメモリオーバーロードになるので、アクション拡張の開始前に小さいイメージをロードする方法が必要です。 – Tolecen

関連する問題