2

UIImagePickerControllerプロパティallowsEditingを に設定して を使用していますYES

ユーザーが画像の選択を終了したら、ユーザーが選択した画像を編集したかどうか (たとえば、画像をスケーリングしたかどうか) を知りたいです。この方法:

UIImage *editedImage = [info objectForKey:@"UIImagePickerControllerEditedImage"];

ユーザーが画像をそのままにしておいても、常にオブジェクトを返します。ユーザーが画像を編集したかどうかを確認する方法はありますか? たとえば、UIImagePickerControllerEditedImageUIImagePickerControllerOriginalImageが何らかの形で異なるかどうかを確認できますか?

4

5 に答える 5

8

よくわからないので、 didFinishPickingMediaWithInfoでこれを試してください:

 UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];

 UIImage *editedimage = [info objectForKey:UIImagePickerControllerEditedImage];

 if ([UIImagePNGRepresentation(image) isEqualToData:UIImagePNGRepresentation(editedimage)])
  //not edited
 else
  //edited
于 2012-10-22T11:46:49.347 に答える
0

これは非常に古い質問であり、しばらく活動がないことは知っていますが、これはグーグル検索で出てくるものであり、私が知る限り、質問は満足のいく回答を得られていません.

とにかく、画像が編集されているかどうかを確認する方法は次のとおりです。

didFinishPickingMediaWithInfo: では、CropRect の幅と元の画像の幅を調べることができます。CropRect.width == originalImage.width+1 の場合、編集されていません。これが当てはまる理由は、画像を編集するには、ユーザーがピンチしてズームする必要があるためです。これにより、画像が拡大縮小され、CropRect のサイズが変更されます。単純に画像を移動しても、拡大縮小しない限り元に戻るため、うまくいきません。

NSValue *pickerCropRect = info[UIImagePickerControllerCropRect];
CGRect theCropRect = pickerCropRect.CGRectValue;

UIImage *originalImage = info[UIImagePickerControllerOriginalImage];
CGSize originalImageSize = originalImage.size;

if (theCropRect.size.width == originalImageSize.width+1) {
    NSLog(@"Image was NOT edited.");
} else {
    NSLog(@"Image was edited.");
}

私が知る限り、これは 6S および 6+ の iOS 9 で動作します。他の場所で機能しない本当の理由はわかりません。

于 2016-09-01T17:57:10.310 に答える
0

これをチェックしてください:

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIImagePickerControllerDelegate_Protocol/UIImagePickerControllerDelegate/UIImagePickerControllerDelegate.html#//apple_ref/doc/uid/TP40007069

これは ImagePicker Delegate のドキュメントです。ご覧のとおり、ユーザーがピックして画像を作成すると、次のように呼び出されます。

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info

info - 何が起きて何が選ばれたかに関するデータを含む辞書です。allowiting が YES に設定されている場合、情報には元の画像と編集された画像の両方が含まれます。私があなたに与えたリンクをチェックインしてください

情報キーの編集

そこには、求めるデータを提供できる定数がたくさんあります。

ここから開始して、全体の仕組みを確認してください: http://developer.apple.com/library/ios/documentation/uikit/reference/UIImagePickerController_Class/UIImagePickerController/UIImagePickerController.html#//apple_ref/occ/instp/UIImagePickerController/allowsEditing

于 2012-10-22T12:54:24.357 に答える
0

画像の CGSize を取得して比較することはできませんか?

BOOL sizeChanged = FALSE;

// get current size of image
CGSize originalSize = [image size];

//After the user hase made the action, get the new size
CGSize currentSize = [image size];

// if the dimensions have been editied the condition is true
if ( originalSize.width  != currentSize.width ||
     originalSize.height != currentSize.height
   )
    sizeChanged = TRUE;
else
    sizeChanged = FALSE;
于 2012-10-22T12:16:51.217 に答える
0
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];

 UIImage *editedimage = [info objectForKey:UIImagePickerControllerEditedImage];
if(editedimage.length>0){
//then got the edited image
}
于 2012-10-22T11:49:47.343 に答える