1

から編集済みの画像を取得していUIImagePickerControllerます。Retina iOS デバイスでは返される画像は640x640ですが、非 Retina iOS デバイスでは返される画像は320x320のみです。

手動でアップスケーリングせずに非 Retina デバイスのコントローラーから640x640を取得するにはどうすればよいですか? アップロードしているので、画面に関係なくサイズを一定にする必要があります。

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    UIImage *image = info[UIImagePickerControllerEditedImage];

    //image.size is 320x320 points on both retina and non-retina devices.
    //How do I get 640x640 *pixels* for non-retina devices without upscaling?
}
4

1 に答える 1

1

よくわかりませんが、画像のサイズを変更しないと、網膜と非網膜の画像を自動的に取得することはできません。

したがって、次のコードで画像のサイズを変更する必要があります。

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    [self dismissViewControllerAnimated:YES completion:nil];


   UIImage *img = [info objectForKey:UIImagePickerControllerEditedImage];
   img = [self resizeImage:img];

  // here you got, img = 640x640 or 320x320 base on you device;

}

resizeImageのコード

- (UIImage*)resizeImage:(UIImage*)image
{ 
    CGSize newSize = nil;

    if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]
     && [[UIScreen mainScreen] scale] == 2.0) {
         // Retina
         newSize = CGSizeMake(640, 640); // Here you need to set size as you want;
    } else {
          // Not Retina
        newSize = CGSizeMake(320, 320); // Here you need to set size as you want;
     }

    UIGraphicsBeginImageContext( newSize );// a CGSize that has the size you want

    [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return newImage;
}
于 2013-08-16T09:46:45.187 に答える