1

即时通讯使用别人的捏手势代码缩放这完美的作品,但它缩放我的图片在我的照片编辑应用程序和一旦用户按下完成缩放,我需要的变化反映和保存或另一种说法,我需要的方式图像实际上是放大和裁剪,如果有人用捏缩放。我想我可以使用它们缩放的数量* uigraphicsbeginimagecontext的帧大小,但该策略不起作用,因为当用户缩放图像并点击完成按钮时,图像被保存得更小,因为现在非常大的尺寸被挤压到视图中当我真正想要的时候,它会减少剩余物,而不是做任何适合的事情。IOS UIImage缩放和裁剪,放大实际上使图像变小?

- (IBAction)pinchGest:(UIPinchGestureRecognizer *)sender{ 


if (sender.state == UIGestureRecognizerStateEnded 
    || sender.state == UIGestureRecognizerStateChanged) { 
    NSLog(@"sender.scale = %f", sender.scale); 

    CGFloat currentScale = self.activeImageView.frame.size.width/self.activeImageView.bounds.size.width; 
    CGFloat newScale = currentScale * sender.scale; 

    if (newScale < .5) { 
     newScale = .5; 
    } 
    if (newScale > 4) { 
     newScale = 4; 
    } 

    CGAffineTransform transform = CGAffineTransformMakeScale(newScale, newScale); 
    self.activeImageView.transform = transform; 
    scalersOfficialChange = newScale; 
    sender.scale = 1; 

} 
} 

- (IBAction)doneMoverViewButtonPressed:(UIButton *)sender { 
// turn off ability to move & scale 
moverViewActive = NO; 

NSLog(@"%f %f",dragOfficialChange.x,dragOfficialChange.y); 
NSLog(@"%f",rotationOfficialChange); 
NSLog(@"%f",scalersOfficialChange); 


//problem area below... 
CGSize newSize = CGSizeMake(self.activeImageView.bounds.size.width * scalersOfficialChange, self.activeImageView.bounds.size.height * scalersOfficialChange); 

UIGraphicsBeginImageContext(newSize); 

[self.activeImageView.image drawInRect:CGRectMake(dragOfficialChange.x, dragOfficialChange.y, self.layerContainerView.bounds.size.width, self.layerContainerView.bounds.size.height)]; 

self.activeImageView.image = UIGraphicsGetImageFromCurrentImageContext(); 


UIGraphicsEndImageContext(); 

[self hideMoveViewerAnimation]; 

//resets activeimageview coords 
CGRect myFrame = self.layerContainerView.bounds; 
myFrame.origin.x = 0; 
myFrame.origin.y = 0; 
self.activeImageView.frame = myFrame; 

//reset changes values 
dragOfficialChange.x = 0; 
dragOfficialChange.y = 0; 
rotationOfficialChange = 0; 
scalersOfficialChange = 0; 

} 

回答

0

首先,你可以让你的问题更清楚了吗?我建议你想直接画出你的形象,不想挤压它,对吗?

然后让试试这个方法:

//The method: drawInRect:(CGRect) will scale your pic and squeeze it to fit the Rect area 
//So if you dont want to scale your pic, you can use the method below 
[image drawAsPatternInRect:(CGRect)_rect]; 
//This method would not scale your image and cut the needless part 
+0

这让我在正确的方向前进,以便感谢我可能需要重写的问题是试图翻译一下显示的pinchgesture从缩放手势变换到最终绘制完全匹配它。我不是很确定这个转换是在做什么,但是我假设调整了图像视图的大小,我认为它可以用作预览,但是像我说的那样,我很难将其转换为最终图像,并在转换后重新设置图像视图。再次感谢。 – rezand