У меня чертовски много времени используется CGImageCreateWithImageInRect, чтобы обрезать фотографию.В моем приложении пользователь перемещает / увеличивает изображение до тех пор, пока оно не заполняет вид 316 x 316, а затем я хочу, чтобы оно обрезало любую область за пределами рамки и сохраняло изображение как UIImage.Я определяю источник обрезки, беря абсолютное значение источника изображения x и y, так как это возвращает меня к 0,0 из окна / вида, содержащего представление изображения.Ниже приведен код:
CGRect croppedRect = CGRectMake(fabs(widthDistanceToOrigin), fabs(HeightDistanceToOrigin), 316, 316);
CGImageRef croppedImageRef = CGImageCreateWithImageInRect(image.CGImage, croppedRect);
UIImage *croppedImage = [UIImage imageWithCGImage: croppedImageRef scale: 1 / (imageScale) orientation: image.imageOrientation];
CGImageRelease(croppedImageRef);
Это сводит меня с ума, я просто не могу заставить его обрезать нужную область.Я правильно настроил масштабирование, но проблема, похоже, в том, что X и Y имеют начало прямоугольника кадрирования, это совсем немного от области, которую он должен взять (и иногда я получаю странные результаты).
Кроме того, кажется, что для изображений, сделанных камерой телефона, мне нужно умножить все в моем кадрированном прямоугольнике на 2, чтобы он был правильного размера.Очень странно.
Поэтому мне интересно, кто-нибудь знает, как это исправить, или у кого-нибудь есть лучший способ обрезки (и имейте в виду, что мне нужно обрезать область на моей фотографии),Спасибо!