내가 언급 한 모든 것을 적용한 후에도 여전히 이미지와 함께 드라마를 보았습니다. 결국, 나는 Gimp를 사용하여 모든 이미지의 'flipped vertical'버전을 만들었습니다. 이제 변환을 사용할 필요가 없습니다. 잘만되면 이것이 더 이상 문제를 일으키지 않을 것입니다.
CGContextDrawImage가 왜 내 이미지를 거꾸로 그리는지 아는 사람이 있습니까? 내 응용 프로그램에서 이미지를로드하고 있습니다.
Quartz2d는 원점이 왼쪽 아래 모서리에있는 다른 좌표계를 사용합니다. 따라서 Quartz가 100 * 100 이미지의 픽셀 x [5], y [10]을 그리면 왼쪽 상단 대신 왼쪽 하단에 픽셀이 그려집니다. 따라서 '플립'이미지가 발생합니다.
x 좌표계가 일치하므로 y 좌표를 뒤집어 야합니다.
CGContextTranslateCTM(context, 0, image.size.height);
이것은 x 축에서 이미지를 0 단위로, y 축에서 이미지 높이로 이미지를 변환했음을 의미합니다. 그러나 이것만으로도 이미지가 여전히 거꾸로되어 있다는 것을 의미합니다. 아래에서 "image.size.height"를 그리면됩니다.
Quartz2D 프로그래밍 가이드는 ScaleCTM을 사용하고 음수 값을 전달하여 이미지를 뒤집는 것이 좋습니다. 다음 코드를 사용하여이를 수행 할 수 있습니다.
CGContextScaleCTM(context, 1.0, -1.0);
CGContextDrawImage
통화 직전에 두 가지를 결합하면 이미지가 올바르게 그려집니다.
UIImage *image = [UIImage imageNamed:@"testImage.png"];
CGRect imageRect = CGRectMake(0, 0, image.size.width, image.size.height);
CGContextTranslateCTM(context, 0, image.size.height);
CGContextScaleCTM(context, 1.0, -1.0);
CGContextDrawImage(context, imageRect, image.CGImage);
의도하지 않은 결과를 얻을 수 있으므로 imageRect 좌표가 이미지의 좌표와 일치하지 않으면 조심하십시오.
좌표를 다시 변환하려면
CGContextScaleCTM(context, 1.0, -1.0);
CGContextTranslateCTM(context, 0, -imageRect.size.height);