Я использую CGImageCreateWithImageInRect
, чтобы обрезать снимок, сделанный камерой. Ориентация iPhone (и фотоизображения) - «Портрет», и, насколько я понимаю, CGImageCreateWithImageInRect
ожидает, что источник находится в левом нижнем углу телефона, когда он удерживается в «Портрете». Другими словами, начало координат должно начинаться с приращений 0,480 и y, когда вы поднимаетесь к верхнему левому углу, а x остается прежним.
Однако, к моему удивлению, мне пришлось переместить координату x, чтобы следующий код работал правильно. Начало координат х должно было начинаться в верхнем правом углу, при этом у оставалось неизменным. Глядя на другие случаи использования CGImageCreateWithImageInRect
в сети и здесь, на SO, я не вижу никакого кода, чтобы смягчить возникшую у меня проблему, поэтому я озадачен, почему следующий код работает только тогда, когда источник перемещен из 0,0 до 320,0.
Может кто-нибудь добавить понимание? Спасибо!
- (UIImage *)crop:(CGRect)rect {
CGImageRef croppedImageRef = CGImageCreateWithImageInRect([self CGImage], CGRectMake(rect.origin.y, [self size].width - rect.origin.x - rect.size.width, rect.size.height, rect.size.width));
UIImage *croppedImage = [UIImage imageWithCGImage:croppedImageRef scale:self.scale orientation:[self imageOrientation]];
CGImageRelease(croppedImageRef);
return croppedImage;
}