Хорошо, я обыскал все, и я не могу найти ответ, который мне нужен.: - (
Вот что я делаю и что мне нужно сделать. У меня есть UIImageView, который я могу преобразовать с помощью UIPanGestureRecognizer, UIRotationGestureRecognizer и UIPinchGestureRecognizer - все это прекрасно работает. Проблема возникает тогда, когда это так.время, чтобы сохранить эти преобразования в моем фотоальбоме. Результаты не то, что я ожидаю. Пока вот код, который я использую (хотя-бы очень неполный)
-(IBAction)saveface:(id)sender
{
static int kMaxResolution = 640;
CGImageRef imgRef = face.image.CGImage;
CGFloat width = CGImageGetWidth(imgRef);
CGFloat height = CGImageGetHeight(imgRef);
CGRect bounds = CGRectMake(0, 0, width, height);
if (width > kMaxResolution || height > kMaxResolution) {
CGFloat ratio = width/height;
if (ratio > 1) {
bounds.size.width = kMaxResolution;
bounds.size.height = bounds.size.width / ratio;
} else {
bounds.size.height = kMaxResolution;
bounds.size.width = bounds.size.height * ratio;
}
}
UIGraphicsBeginImageContext(bounds.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextScaleCTM(context, 1, -1);
CGContextTranslateCTM(context, 0, -height);
NSLog(@"SAVE TX:%f TY:%f A:%f B:%f C:%f D:%f", face.transform.tx, face.transform.ty, face.transform.a,face.transform.b,face.transform.c,face.transform.d);
CGFloat x = face.transform.tx;
CGFloat y = face.transform.ty;
CGContextTranslateCTM (context, x,-y);
CGContextConcatCTM(context, face.transform);
CGContextDrawImage(UIGraphicsGetCurrentContext(), CGRectMake(0, 0, width, height), imgRef);
UIImage *imageCopy = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(imageCopy, self, nil, nil);
}
Из этого метода яЯ могу сохранить изображение, однако координаты находятся далеко. Я вижу любое масштабирование, которое я сделал, которое работает нормально. Я вижу свое вращение, но оно кажется обратным, и панорамирование отключено.
Координатывсе неправильно, и я не могу понять, в чем дело. Я признаю, что я новичок в Objective-C, и я никогда раньше не использовал Quartz 2D, и мое понимание матриц преобразования ограничено. Я понимаю, что моепреобразования не в самих данных изображения, а в попытке сохранить изображение без применения этого контекстаничего не делает.Так что, пожалуйста, кто-нибудь может объяснить мне это?