2013-02-26 6 views
0

이동/크기 조정이 가능한 UIImageView이 있습니다 (self.imageForEditing). 이 이미지 뷰 위에는 고정되어 있고 이동할 수없는 구멍이있는 오버레이가 있습니다. 단추를 누를 때 구멍을 통해 보이는 기본 이미지의 일부만 저장해야합니다. 내 현재 시도 :마스크를 사용하여 UIImage를 저장하는 방법

- (IBAction)saveImage 
{ 

    UIImage *image = self.imageForEditing.image; 

    CGImageRef originalMask = [UIImage imageNamed:@"picOverlay"].CGImage; 
    CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(originalMask), 
             CGImageGetHeight(originalMask), 
             CGImageGetBitsPerComponent(originalMask), 
             CGImageGetBitsPerPixel(originalMask), 
             CGImageGetBytesPerRow(originalMask), 
             CGImageGetDataProvider(originalMask), nil, YES); 

    CGImageRef maskedImageRef = CGImageCreateWithMask(image.CGImage, mask); 

    UIImage *maskedImage = [UIImage imageWithCGImage:maskedImageRef scale:image.scale orientation:image.imageOrientation]; 

    CGImageRelease(mask); 
    CGImageRelease(maskedImageRef); 

    UIImageView *test = [[UIImageView alloc] initWithImage:maskedImage]; 
    [self.view addSubview:test]; 
} 

테스트로 나는 새로 만든 이미지를 화면 왼쪽 상단에 추가하려고합니다. 이론적으로 작은 둥근 이미지 (오버레이를 통해 보이는 부분) 여야합니다. 그러나 나는 전체 이미지가 다시 생성되는 중입니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 그리고 self.imageForEditing을 이동할 수 있다는 사실을 어떻게 설명 할 수 있습니까?

답변

0

CGImageCreateWithMask 원본과 동일한 크기의 이미지를 반환합니다. 그게 바로 마스크가 적용된 원본 이미지를 얻는 이유입니다.

마스크를 적용한 다음 보이지 않는 테두리를 제거 할 수 있습니다. 이 질문의 조언을 사용하십시오. iOS: How to trim an image to the useful parts (remove transparent border)

이미지의 불투명 한 부분의 경계를 찾아 새 이미지로 다시 그립니다.

관련 문제