【发布时间】:2014-05-30 15:11:52
【问题描述】:
我正在做一个应用程序,我将从相机或相机胶卷中拍摄照片并使用蒙版图像进行蒙版,但我如何调整图像或蒙版?我尝试使用滚动视图进行放大和缩小以及捏合手势?
- (void)viewDidLoad
{
[super viewDidLoad];
// for zoomin
[self.imageview setImage:imageView.image];
[self.scrollView setMaximumZoomScale:5.0f];
[self.scrollView setClipsToBounds:YES];
// for drag
UIPinchGestureRecognizer *pinch=[[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(pinched:)];
[self.imageview addGestureRecognizer:pinch];
}
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
return self.imageview;
}
- (void)pinched:(UIPinchGestureRecognizer *)sender {
if (sender.scale >1.0f && sender.scale < 2.5f) {
CGAffineTransform transform = CGAffineTransformMakeScale(sender.scale, sender.scale);
imageView.transform = transform;
}
}
-(IBAction)camera:(id)sender {
picker = [[UIImagePickerController alloc]init];
picker.delegate = self;
[picker setSourceType:(UIImagePickerControllerSourceTypeCamera)];
[self presentViewController:picker1 animated:YES completion:NULL];
}
- (void)imagePickerController:(UIImagePickerController *)photoPicker didFinishPickingMediaWithInfo:(NSDictionary *)info {
img = [info valueForKey:UIImagePickerControllerOriginalImage];
[self.imageview setImage:img];
[self dismissViewControllerAnimated:YES completion:NULL];
}
-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
[picker dismissViewControllerAnimated:YES completion:NULL];
}
- (UIImage*) maskImage:(UIImage *) image withMask:(UIImage *) mask
{
CGImageRef imageReference = image.CGImage;
CGImageRef maskReference = mask.CGImage;
CGImageRef imageMask = CGImageMaskCreate(CGImageGetWidth(maskReference),
CGImageGetHeight(maskReference),
CGImageGetBitsPerComponent(maskReference),
CGImageGetBitsPerPixel(maskReference),
CGImageGetBytesPerRow(maskReference),
CGImageGetDataProvider(maskReference),
NULL, // Decode is null
YES // Should interpolate
);
CGImageRef maskedReference = CGImageCreateWithMask(imageReference, imageMask);
CGImageRelease(imageMask);
UIImage *maskedImage = [UIImage imageWithCGImage:maskedReference];
CGImageRelease(maskedReference);
return maskedImage;
}
- (IBAction)mask:(id)sender {
self.imageview.image = [self maskImage:img withMask:[UIImage imageNamed:@"18.jpg"]];
[sender addTarget:self
action:@selector(maskButtonClicked:)
forControlEvents:UIControlEventTouchUpInside];
}
【问题讨论】:
-
您需要提供您的
maskImage:WithMask:方法。问题很可能就在那里。 -
阅读我上面的评论,如果没有看到有问题的代码,我们将无法帮助您。
-
我做到了,你可以检查我上面的代码
标签: ios objective-c uiimageview mask