Я хочу иметь возможность масштабировать и позиционировать изображение, а затем сохранить только часть этого изображения. В настоящее время у меня есть UIImageView внутри UIScrollView. После увеличения и позиционирования изображения я нажимаю кнопку и затем получаю следующий код.
// imageScale = current scale of UIView
// get the new width and height of the scaled UIView
float scaledImageWidth = [scrollView viewWithTag:1].frame.size.width;
float scaledImageHeight = [scrollView viewWithTag:1].frame.size.height;
// get starting X and Y coords of target in relation to UIView
// target is a box in the middle of the screen, 210x255px
float imageY = scaledImageHeight / 2 - (scrollView.contentOffset.y * imageScale);
imageY = (imageY < 0) ? (140 * imageScale) + ((imageY * -1) + (scrollView.contentOffset.y *imageScale)) : (140 * imageScale) - imageY;
float imageX = scaledImageWidth / 2 - (scrollView.contentOffset.x * imageScale);
imageX = (imageX < 0) ? (56 * imageScale) + ((imageX * -1) + (scrollView.contentOffset.x *imageScale)) : (56 * imageScale) - imageX;
// image = original unscaled UIImage
// create new UIImage that matches the size of the scaled UIView we have been working with
UIGraphicsBeginImageContext( CGSizeMake(scaledImageWidth, scaledImageHeight) );
[image drawInRect:CGRectMake(0,0,scaledImageWidth, scaledImageHeight)];
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
// now with the UIImage that is the size we want, copy a piece of the image
CGImageRef imageRef = CGImageCreateWithImageInRect([newImage CGImage], CGRectMake(imageX,imageY,210, 255));
UIImage* myThumbnail = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
Кажется, это работает в основном нормально. Проблема, которую я вижу, состоит в том, что, когда я делаю окончательную копию только части изображения, копия (myThumbnail) не масштабируется. Тем не менее, источник (newImage), кажется, масштабируется без проблем. Кто-нибудь знает, что мне не хватает, или если бы был другой подход к этой проблеме?
Edit:
Хорошо, я был немного не в себе. Копия масштабируется. Проблема у меня в том, что ее позиция выключена. Поэтому, если позиция изображения слишком далеко в одном направлении, новая копия не будет в правильном положении. Например, если я переместу изображение так, чтобы обрезать нижний левый угол, это может дать мне полоску справа вместо левой нижней части изображения.