相机叠加用户照片后未保存为编辑后的照片

21

我正在使用带有抠图的透明图片,让用户插入/拍摄自己的照片。但问题是,当使用UIImagePickerControllerEditedImage 裁剪用户拍摄的照片后,编辑后的照片并未被保存,示例见下图。

我的问题是所编辑的照片没有按照实际裁剪/调整大小的方式进行保存。

设置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];
}

图片编辑后:

- (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 );       
}

此外,如下图所示,在编辑的“裁剪”部分还有空白间隔:

enter image description here


我在S.O.上找到了另一个答案,帮助我解决了这个问题。https://dev59.com/YnM_5IYBdhLWcg3wt1k0#1262395 - WrightsCS
1
WrightsCS,你能否添加一个答案并将其标记为已接受(不是滥用SO)?这样,将来发现这个问题的人就可以看到你是如何解决它的。 - Tad Donaghe
@Terry,您现在无法在S.O上发布自己的问题的答案。请将其作为评论添加,抱歉。 - WrightsCS
我相信是这样的,因为当我尝试回答问题时,它会将其添加为评论。 - WrightsCS
如果你对自己的问题给出非常简短的答案,它会变成一条评论。 - Anthony Mattox
显示剩余2条评论
1个回答

1

我认为这是因为编辑后的照片不包括标准iOS图像编辑器中显示的半透明框架叠加所遮挡的部分。(你发现必须偏移的60px是该叠加物的上半部分的60px。)

您可以从info字典中提取和扩展UIImagePickerControllerCropRect键,并在UIImagePickerControllerOriginalImage上自行进行编辑,以获得所需的结果图像。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接