Nakładka na aparat z użytkownikiem-zdjęcie nie zapisywane jako edytowane

Używam przezroczystego obrazu z wyciąć dla użytkownika, aby wstawić / zrobić własne zdjęcie. Z jakiegoś powodu, podczas korzystania z UIImagePickerControllerEditedImage i przycinania zdjęcia zrobionego przez użytkownika, obraz nie zapisuje się tak, jak był edytowany; patrz na przykład zdjęcie.

Mój problem polega na tym, że obraz nie zapisuje dokładnie tego, jak zdjęcie zostało edytowane. (tj.: przycięte / zmienione rozmiary).

Konfiguracja interfejsu UIImagePicker

-(void)choosePhotoDialog:(id)sender
{        
    OverlayView * overlay = [[OverlayView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH_IPHONE, SCREEN_HEIGTH_IPHONE) andPhoto:[dict objectForKey:@"imageUrl"]];
    [overlay setUserInteractionEnabled: NO];

    UIImagePickerController * picker = [[UIImagePickerController alloc] init];
    [picker setSourceType: UIImagePickerControllerSourceTypeCamera];
    [picker setDelegate: self];
    [picker setAllowsImageEditing: YES];
    [picker setShowsCameraControls: YES];
    [picker setNavigationBarHidden: YES];
    [picker setWantsFullScreenLayout: YES];
    [picker setCameraOverlayView: overlay];
    [self presentModalViewController:picker animated:YES];  
    [picker release];
}

Po edycji obrazu:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    SDWebImageManager * manager = [SDWebImageManager sharedManager];
    UIImage * cachedImage  = [manager imageWithURL: [NSURL URLWithString: @"http://www.someurl.com/test.png"]];
    UIImage * userOriginal = [info valueForKey:UIImagePickerControllerEditedImage];

    /*  combining the overlay and the user-photo  */
    UIGraphicsBeginImageContext( CGSizeMake(640,960) );

        /*  for some reason I have to push the user-photo
            down 60 pixels for it to show correctly as it
            was edited.
         */
        [userOriginal drawAtPoint:CGPointMake(0,60)];
        [cachedImage drawAtPoint:CGPointMake(0,0)];

        UIImage * draft = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    UIImageWriteToSavedPhotosAlbum( draft, self, @selector(image:didFinishSavingWithError:contextInfo:), nil );       
}

Jak również istnieją białe spacje z edycji "crop", jak pokazano na poniższym rysunku:

Tutaj wpisz opis obrazka

Author: WrightsCS, 2011-08-16

1 answers

Uważam, że dzieje się tak dlatego, że edytowane zdjęcie nie zawiera części zasłoniętych półprzezroczystą nakładką kadrowania, która jest pokazywana jako część standardowego edytora obrazów iOS. (60px, które musisz zrównoważyć, to 60px górnej połowy tej nakładki.)

Możesz wyodrębnić i rozwinąć klucz UIImagePickerControllerCropRect ze słownika info i ponownie wykonać edycję na UIImagePickerControllerOriginalImage, aby uzyskać pożądany obraz.

 1
Author: Benjie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-25 15:24:16