2013-10-24 1 views
2

다음 코드는 이미지에 CIFourfoldRotatedTile 필터를 적용하기 위해 적용하려고하지만 출력에 이미지가 없습니다.CIFourfoldRotatedTile 코어 이미지 필터

CIContext *context = [CIContext contextWithOptions:nil];    // 1 
CIImage *aimage = [CIImage imageWithCGImage:[UIImage imageNamed:@"Image1.png"].CGImage]; 
CIFilter *filter = [CIFilter filterWithName:@"CIFourfoldRotatedTile"];   // 3 
[filter setValue:aimage forKey:kCIInputImageKey]; 
[filter setValue:[CIVector vectorWithCGPoint:CGPointMake(200, 200)] forKey:@"inputCenter"]; 
[filter setValue:[NSNumber numberWithFloat:2.0] forKey:@"inputAngle"]; 
[filter setValue:[NSNumber numberWithFloat:50] forKey:@"inputWidth"]; 

CIImage *result = [filter valueForKey:kCIOutputImageKey];    // 4 
CGRect extent = [result extent]; 
CGImageRef cgImage = [context createCGImage:result fromRect:extent]; 
UIImage *finalImage = [UIImage imageWithCGImage:cgImage]; 
self.imgview.image = finalImage; 

어떤 매개 변수를 잘못 입력했는지 모릅니다. 제발 날 안내 해줘. 감사합니다. .

답변

1

방금 ​​코드를 확인한 결과 extent이 무한합니다. 즉 nil 이미지가 표시됩니다. 난 그냥 여기에 약간의 변화를 만들어, 당신의 프레임 다음

CGRect extent = CGRectMake(0.0, 0.0, image.size.width, image.size.height); 

또는

CGRect extent = [aimage extent]; 

시도로 범위를 제공합니다.

+0

범위에는 출력 이미지 크기가 포함되어 있으므로 내 출력 이미지가 필터를 사용하여 제대로 생성되지 않는다는 것을 의미합니다. – Leena

+0

나는 옳다고 생각합니다. – TheTiger

+0

실제로'CIGaussianBlur'도 시도해 보았고'[결과 범위]'는 기본값으로도 테스트 할 수 있다고해도 정확하지 않습니다. 아무것도 채우지 마십시오. 기본값으로 시도한 다음 참조하십시오. – TheTiger