复制缩放的UIImage的一部分

时间:2010-01-15 00:11:47

标签: iphone copy uiimage

我希望能够缩放和定位图像,然后只保存该图像的一部分。我目前在UIScrollView中有一个UIImageView。在缩放和定位图像后,我点击了一个按钮,然后输入以下代码。

// 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)似乎没有问题。有谁知道我错过了什么,或者是否会有不同的方法解决这个问题?

修改 好的,我有点不对劲。副本正在缩放。我遇到的问题是它的位置是关闭的。因此,如果图像位置在一个方向上太远,则新副本将不在正确的位置。例如,如果我移动图像以便我在左下方裁剪,则可能会在右侧给出一个条子而不是图像的左下角。

0 个答案:

没有答案