2010-03-05 61 views
0

我在UIScrollView内使用UIImageView让用户捏和缩放图像。我现在想要获取用户修改后的图像(小图或放大图)。我怎样才能做到这一点?从UIImageView获取缩放图像

谢谢。

好吧,我正在尝试新的东西。我可以从中间的某个图像获取缩略图吗? 我可以从(0,0)中获得固定大小的缩略图。我可以从说(10,20)或(30,30)中得到吗?再次感谢。 我尝试使用CGImageCreateWithImageInRect与矩形这些值为x和y。但它给了我一个点0,0的图像

+0

你是什么意思“获得图像”是什么意思?你的意思是你想创建另一个基于这个尺寸的UIImage?或者你想要一个图像文件? – 2010-03-05 10:59:18

+0

我想创建一个UIImage与调整大小的图像。 – lostInTransit 2010-03-05 11:18:00

+0

PPS - 适用于肖像图像。只发布风景图片.. – lostInTransit 2010-03-06 12:59:18

回答

1

当你在UIScrollView中缩放UIImageView对象时,你只改变了UIImageView框架,但是UIImage在image属性中保持不变。

,如果你只是想显示此图像中一些其他的UIImageView缩放,你不应该改变的UIImage大小,只要将新的UIImageView帧与从UIScrollView的缩放的UIImageView的框架,并使用相同的图像:

UIImageView * ImageViewOnScroll; 
//set image and zoom it 
... 
UIImageView * newImageView = [[UIImageView alloc] initWithImage:ImageViewOnScroll.image]; 
newImageView.frame = ImageViewOnScroll.frame; 

如果你想创建一个改变后大小,你可以用下面简单的方法做到这一点,例如新的UIImage一些原因:

UIImage * resizeImage(UIImage * img, CGSize newSize){ 
    UIGraphicsBeginImageContext(newSize); 

    //or other CGInterpolationQuality value 
    CGContextSetInterpolationQuality(UIGraphicsGetCurrentContext(), kCGInterpolationDefault); 

    [img drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)]; 
    UIImage * newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return newImage; 
} 
+0

AFAIK你提到的方法(resizeImage)只会给我一部分图像裁剪。它不会给我放大的图像。 – lostInTransit 2010-03-06 06:02:58

+0

感谢vladd,给了我一个实现我的目的的想法。请参阅更新的问题。上述代码(resizeImage方法)的 – lostInTransit 2010-03-06 11:16:19

+1

返回调整大小的整个图像。使用CGImageCreateWithImageInRect(CGImageRef图像,CGRect矩形); 结合CGImageCreateWithImageInRect和上下文绘图,您可以获取图像的任何部分,将其大小调整为任意大小,并将其放置在新图像的任何区域内。 – Vladimir 2010-03-06 22:52:44