문제

나는 아주를 찾는 힘든 시간이 어떤 설명서를 온라인으로는 명확하게 구현 방법에 대해서도 설명합니다 코어 이미지의 CIPerspectiveTransform 필터를니다.특히,이 경우 설정 값 CIVector inputTopLeft, inputTopRight, inputBottomRight, 고 inputBottomLeft, 무엇인지,이 벡터를 하고 있지?(I.e., 는 무엇입학 뒤에 어떻게 이러한 벡터 warp 나의 이미지?)

이 코드를 사용하고.그것은 충돌하지 않지만,그렇지 않 이미지를 표시:

CIImage *myCIImage = [[CIImage alloc] initWithImage:self.image];
CIContext *context = [CIContext contextWithOptions:nil];
CIFilter *filter = [CIFilter filterWithName:@"CIPerspectiveTransform" keysAndValues:@"inputImage", myCIImage, @"inputTopLeft", [CIVector vectorWithX:118 Y:484], @"inputTopRight", [CIVector vectorWithX:646 Y:507], @"inputBottomRight", [CIVector vectorWithX:548 Y:140], @"inputBottomLeft", [CIVector vectorWithX:155 Y:153], nil];
CIImage *outputImage = [filter outputImage];
CGImageRef cgimg = [context createCGImage:outputImage fromRect:[outputImage extent]];
UIImage *transformedImage = [UIImage imageWithCGImage:cgimg];
[self setImage:transformedImage];
CGImageRelease(cgimg);

다른 것들을 참고 중요 할 수 있습니다:

  • 나의 반환</(75pts x115pts)는 이미 초기화를 통해 awakeFromNib 및 이미 이미지(151px x235px)연결되어 있습니다.

  • 위의 코드는 구현에 반환</s - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 기능입니다.희망은 난 것을 조정할 수 있는 관점에 따라 이미지의 화면 좌표를 그것처럼 보이는 이미지가 움직이는 3 차원 공간에서.

  • 이 코드는 아이폰 앱입니다.

다시 질문을 내가 생각하기에 요구되는 다양한 매개변수 벡터,하지만 난 부탁 수 있습니다 잘못된 질문입니다.

다음 게시물이 매우 비슷하지만은 이유를 묻는 자신의 이미지가 사라지기보다는 사용하는 방법 CIVectors 에 대한 CIPerspectiveTransform.그것은 또한을 받고 있는 아주 작은 견인,아마도 그것 때문에 너무 일반적인:어떻게 사용할 수 있습 CIPerspectiveTransform 필터

도움이 되었습니까?

해결책

내가에 댓글을 연결,질문 CIPerspectiveTransform 가 에서 사용할 수 없습 iOS 구현의 핵심으로 이미지의 iOS5.1.그런 이유로 당신은 다른 asker 없었던 어떤 이미지기 때문에 결과적으로 대부분의 CIFilter 없음.

하려는 경우에는 구현의 형태에 대한 관점은 이미지,두 개의 서로 다른 빠른 방법이 iOS 에서로에서 설명 이 답변.하나는 단순히 사용 오른쪽 종류의 CATransform3D 에층의 반환</지만,이것은 단지 유용한 디스플레이,지에 대한 이미지를 조정한다.

두 번째 방법은 이미지를 조작하는 데 사용하여 적절한 3-D 변환 매트릭스에서 OpenGL ES.으로 나는 나타내에서는 상기 연결 답변,나 오픈 소스 프레임워크 래핑하는 모든이며,FilterShowcase 샘플가의를 적용하는 관점이 들어오는 비디오입니다.당신은 쉽게 교체할 수 있으로 비디오 입력으로 귀하의 이미지,그리고 이미지를 잡아서는 후에 효과 관점이 적용됩니다.

다른 팁

Ooooold 게시지만 내가 누군가가 여전히 보면 이런 종류의 여과기:

다음 func 필터를 적용하기 이미지를 반환합니다 같은 이미지와 관점을 만들려고 효과와의 관점입니다.(다음과 같은 이미지를 단지 예의 결과를 실제 테스트)

Example of mirror effect

이것은 그래서 당신이 일부를 필요로 조정합니다.목적 이미지를 만들 수 있을 것의 반영이는"기본"하나입니다.

그래서 나는 추가 두 이미지 뷰를 내기로서의 이미지입니다.추가되는 제약,etc.

다음에 func,당신은 당신의 좌표가 하드 그렇게 돌려보내는 이미지가 완벽하게 일치하는 해당 컨테이너,아래 반환</.

enter image description here

func applyperspectiveTransform(imagen: UIImage) -> UIImage
{

      var context = CIContext()
    var outputImage = CIImage()
    var newUIImage = UIImage()

    let leftTop     = CGPoint(x: self.ImgView.frame.origin.x, y: self.ImgReflection.frame.origin.y + self.ImgReflection.frame.size.height)
    let leftBottom  = CGPoint(x: self.ImgReflection.frame.origin.x, y: self.ImgView.frame.origin.y + self.ImgView.frame.size.height)
    let rightTop    = CGPoint(x: self.ImgView.frame.origin.x + self.ImgView.frame.size.width, y: self.ImgReflection.frame.origin.y + self.ImgReflection.frame.size.height)
    let rightBottom = CGPoint(x: self.ImgReflection.frame.origin.x + self.ImgReflection.frame.size.width, y: self.ImgView.frame.origin.y + self.ImgView.frame.size.height)

    let lT = CIVector(x: leftTop.x, y: leftTop.y)
    let lB = CIVector(x: leftBottom.x, y: leftBottom.y)
    let rT = CIVector(x: rightTop.x, y: rightTop.y)
    let rB = CIVector(x: rightBottom.x, y: rightBottom.y)

    let aCIImage = CIImage(image: imagen)
    context = CIContext(options: nil);

    let perspectiveTransform = CIFilter(name: "CIPerspectiveTransform")!

    perspectiveTransform.setValue(lB,forKey: "inputTopLeft")
    perspectiveTransform.setValue(rB,forKey: "inputTopRight")
    perspectiveTransform.setValue(rT,forKey: "inputBottomRight")
    perspectiveTransform.setValue(lT,forKey: "inputBottomLeft")
    perspectiveTransform.setValue(aCIImage,forKey: kCIInputImageKey)

    outputImage = perspectiveTransform.outputImage!
    let cgimg = context.createCGImage(outputImage, from: outputImage.extent)
    newUIImage = UIImage(cgImage: cgimg!)

    return newUIImage
}

이를 위해 특정 효과(거울)을 추가할 수 있습 좀 더 많은 영향을 미치처럼,그라데이션을 변경,알파,etc.

행복한 코딩!그것을 희망하는 데 도움이

Hope it helps!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top