【问题标题】:Crop a UIImage from the Center outwards?从中心向外裁剪 UIImage?
【发布时间】:2010-12-26 02:26:06
【问题描述】:

我正在制作一个包含数码变焦的相机应用程序。我有一个滑块(zoomSlider),最小值为 1,最大值为 4。当用户点击相机按钮时,它会拍照,然后我将其裁剪以进行缩放。我有两个问题:

如何裁剪图像的正中间? (例如,2 倍缩放,矩形将以 600x800 的尺寸居中(适用于 iPhone 2G/3G))

当我这样做时,它会旋转图像。我通过旋转它所在的 UIImageView 来弥补它,但这会导致纵向图片变为横向,反之亦然。

这是我的代码:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

     if ([mediaType isEqualToString:@"public.image"]){

UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];

          CGRect clippedRect = CGRectMake(600, 450, image.size.width/zoomSlider.value, image.size.height/zoomSlider.value);

          UIImage *cropped = [self imageByCropping:image toRect:clippedRect];

          CGRect croppedImageSize = CGRectMake(0, 0, image.size.width/zoomSlider.value, image.size.height/zoomSlider.value);

          [cropped drawInRect:croppedImageSize];

          zoomPhoto.frame = croppedImageSize;

          zoomPhoto.image = cropped;

CGAffineTransform rotateTransform = CGAffineTransformRotate(CGAffineTransformIdentity,

                                                                                     RADIANS(90.0));

          zoomPhoto.transform = rotateTransform;
}

- (UIImage *)imageByCropping:(UIImage *)imageToCrop toRect:(CGRect)rect

{

     CGImageRef imageRef = CGImageCreateWithImageInRect([imageToCrop CGImage], rect);



     UIImage *cropped = [UIImage imageWithCGImage:imageRef];

CGImageRelease(imageRef);




 return cropped;

}

【问题讨论】:

    标签: iphone uiimage zooming center crop


    【解决方案1】:
    CGFloat newWidth = image.size.width/zoomSlider.value;
    CGFloat newHeight = image.size.height/zoomSlider.value;
    
    CGRect clippedRect = CGRectMake((image.size.width-newWidth)/2, (image.size.height-newHeight)/2, newWidth, newHeight);
    

    删除它不旋转​​图像:

    CGAffineTransform rotateTransform = CGAffineTransformRotate(CGAffineTransformIdentity,RADIANS(90.0));
    
    zoomPhoto.transform = rotateTransform;
    

    【讨论】:

      猜你喜欢
      • 2012-12-21
      • 2017-11-10
      • 2010-09-14
      • 1970-01-01
      • 2012-06-17
      • 1970-01-01
      • 2018-07-08
      • 2011-02-07
      相关资源
      最近更新 更多