UIBezierPath
을 사용하여 UIImage
을 불규칙한 모양으로 자르려고합니다. 이 의도 한대로 작동레이어 마스크를 적용한 후 내 이미지의 크기가 줄어 듭니다.
- (void)maskImageView:(UIImageView *)image
{
UIBezierPath *path = [self getPath];
CGRect rect = CGRectZero;
rect.size = image.image.size;
CAShapeLayer *shapeLayer = [CAShapeLayer layer];
shapeLayer.frame = CGRectMake(0, 0,image.frame.size.width, image.frame.size.height);
shapeLayer.path = path.CGPath;
shapeLayer.fillColor = [[UIColor whiteColor] CGColor];
shapeLayer.backgroundColor = [[UIColor clearColor] CGColor];
[image.layer setMask:shapeLayer];
}
내가 올바르게 마스크 UIImageView
를 얻을 : 이 내가 관심 해요 UIImage
포함 UIImageView
마스크 방법이다. 그러나 나는 다른 이미지 위에 그릴 수 있도록 밑바닥 UIImage
을 얻고 싶습니다. 이것은 내가 얼마나입니다 UIImage
:
-(UIImage *)getCroppedImageForView:(UIImageView *)view{
CGSize size = view.layer.bounds.size;
UIGraphicsBeginImageContext(size);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
내가 다음 이미지를 그려 카메라 롤에 저장
: 나는 저장된 이미지를 볼 때
-(UIImage *)drawImage:(UIImage*)image
{
UIGraphicsBeginImageContext(image.size);
[image drawInRect:CGRectMake(0, 0, image.size.width, image.size.height)];
UIImage *finalImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(finalImage, nil, nil, nil);
return finalImage;
}
나는 그것이보다 작은 것을 알 수 있습니다 이미지 가장자리 주위에 UIBezierPath
을 그렸지만 원본 사진 (실제로는 자르지 않음). 동일한 방법을 사용하여 다른 이미지를 그리고 저장하고 그들은 올바르게 나온다. 그래서 나는 문제가 getCroppedImageForView
메쏘드에 있다고 확신한다. 누구나 올바른 방향으로 나를 가리킬 수 있습니까?
EDIT
이미지는 크기가 아이폰 5 때문에 기기의 카메라를 사용하여 캡처되어 이미지를 포함 UIImageView
의 3264 × 2448 크기는 : 320x568 및 contentMode
가 UIViewContentModeScaleAspectFit
이다. 내가 원하는 것은 전체 크기 (3264x2448)의 자른 이미지를 가져 와서 다른 이미지 (같은 크기) 위에 그립니다.
감사합니다. 나는 당신의 제안에 따라 약간의 코드를 변경했다. 나는 여전히 전체 크기 자른 이미지를 얻을 수 없다. (좀 더 자세한 내용이있는 편집 된 질문을 참조하십시오.) – Gad
@ G.M 아주 좋습니다. 나는 당신이 다루고있는 이미지의 크기에 대한 정보를 주어 내 대답을 분명히했습니다. – Rob
고마워요. 나는 제대로 작동하려면 어떻게해야하는지 이해합니다. – Gad