2013-10-22 2 views
2

나는 이것이 다소 솔직하게 앞으로 나아갈 것이라고 생각했지만 그렇지 않은 것 같았다.C4 자르기 이미지 일부 이상한 일들이 일어나는 것

상황은 내가 이런 이미지를 자르려고 할 때 발견했습니다 :

#import "C4Workspace.h" 

@implementation C4WorkSpace{ 
    C4Image *image; 
    C4Image *copiedImage; 
} 

-(void)setup { 
    image=[C4Image imageNamed:@"C4Sky.png"]; 
    //image.width=200; 
    image.origin=CGPointMake(0, 20); 
    C4Log(@"  image width %f", image.width); 
    //[self.canvas addImage:image]; 

    copiedImage=[C4Image imageWithImage:image]; 
    [copiedImage crop:CGRectMake(50, 0, 200, 200)]; 
    copiedImage.origin=CGPointMake(0, 220); 
    [self.canvas addObjects:@[image, copiedImage]]; 
    C4Log(@"copied image width %f", copiedImage.width); 
} 

@end 
  1. 기원 CGRectMake (x 및 y 좌표)의 왼쪽 상단 모서리에서 시작되지 않습니다,하지만에서 왼쪽 아래와 높이가 아래로 내려가는 대신 올라갑니다.

  2. 잘라 내기 이미지의 크기은 원본 이미지와 실제로 동일합니다. 나는 그 이미지가 정말로 잘려나 가면 안된다고 생각한다.

  3. 다른 눈금 위의 예에서 실제로 눈금을 지정하지는 않지만 원래 크기와 자른 이미지의 눈금은 동일하지 않습니다. 왜? 실제로이 기능이 전혀 다음 유용 할 수 있는지 궁금하네요

... 실제로 이미지의 일부를 자르기보다는하는 원시 이미지 데이터로 이동하는 것이 더 나을 것 같다 이미지가 실제로 정확히 어디 있는지 알 수 있도록 자르기/마스크 된 부분을 추측해야합니다.

아니면 내가 뭔가 잘못하고있는 중입니까? (이미지 자르기에 대한 예제를 찾을 수 없기 때문에 내가 만든 것입니다 ...)

답변

1

이미지에 crop: 필터가 실행될 것으로 예상되는 버그가 있습니다.

1) crop: 메서드는 실제로 Core Graphics를 사용하여 구현 한 것으로 원본 이미지에서 코어 이미지 필터 (CIFilter)를 실행하고 있습니다. 코어 그래픽에서 (0,0)의 위치는 이미지 하단의 왼쪽에 있습니다. 이것이 원산지가 꺼져있는 이유입니다.

2) 예. 이것이 버그 또는 기능으로 간주되어야하는지 확실하지 않습니다.이 점에 대해 생각해보십시오. 실제로 이것은 "필터"가 설계된 방식과 관련이 있습니다.

3) crop:의 버그로 인해 이미지 크기가 2.0이어야하며 1.0에서 다시 렌더링된다는 사실을 필터가 고려하지 않습니다.)

마지막으로 버그를 발견했습니다. 나는 여기에서 해결 될 나열했습니다

https://github.com/C4Framework/C4iOS/issues/110

, 내가 믿고, 내가 원래 장치/시뮬레이터 작업을 할 때 내가 C4Image의 필터 방법을 구축한다는 것입니다 혼란의 많은 이유가 망막이 아니야. 나는 그것들이 어떻게 만들어 졌는지 재검토 할 기회가 없었고, 전에도이 문제에 관해 어떤 질문도 없었습니다!

+0

감사합니다. 2 : 나는 그것을 기능이라고 부르지 않을 것입니다. 이미지의 일부만 표시하려면 이미지를 마스크하고 자르지 말아야합니다. 버그라고 생각합니다. 기능이 아닙니다. 내 경우에는 실제로 내 애플 리케이션 내에서 자른 이미지 중 약 30 개와 함께 작업해야합니다. 그래서 나는 정말로 이미지를 잘라야합니다. 현재로서는 2 가지 대안을 볼 수 있습니다 : 1.새로운 이미지를 만들고 이전의 하나씩 픽셀 단위로 진행하면서 필요한 것만 복사합니다. 2. 이미지의 일부를 앱 문서 디렉토리에 저장하고 거기에서 다시로드합니다. 두 가지 방법을 모두 살펴 보겠습니다. 나중에 새 질문을 올리십시오. – suMi

+0

오. 방금 실제로 이미 솔루션을 이미 보았습니다. 기능별로보기 : http://stackoverflow.com/questions/19490227/c4-saving-part-of-an-image/19528248?noredirect=1#19528248 – suMi

+0

C4의 API 자체를 의미합니다 ... 모든 필터가 이미지 자체에서 직접 작동하기 때문에 디자인 패턴입니다. 따라서 'crop :'은 Core Image API의 기능이며, 기능을 유지해야합니다. 이제 C4 API에서 ... –