Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 从中心向外裁剪UIImage?_Iphone_Uiimage_Zooming_Center_Crop - Fatal编程技术网

Iphone 从中心向外裁剪UIImage?

Iphone 从中心向外裁剪UIImage?,iphone,uiimage,zooming,center,crop,Iphone,Uiimage,Zooming,Center,Crop,我正在制作一个包括数码变焦的相机应用程序。我有一个滑块(zoomSlider),最小值为1,最大值为4。当用户点击相机按钮时,它会拍摄一张照片,然后我将其裁剪以进行缩放。我有两个问题: 如何裁剪图像的中间部分?(例如,2x缩放,Rect将以600x800的尺寸居中(适用于iPhone 2G/3G)) 当我这样做时,它会旋转图像。我通过旋转它所在的UIImageView来弥补它,但这会导致肖像画变成风景画,反之亦然 这是我的密码: - (void)imagePickerController:(UI

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

如何裁剪图像的中间部分?(例如,2x缩放,Rect将以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;
}

删除此选项以不旋转图像:

CGAffineTransform rotateTransform = CGAffineTransformRotate(CGAffineTransformIdentity,RADIANS(90.0));

zoomPhoto.transform = rotateTransform;
删除此选项以不旋转图像:

CGAffineTransform rotateTransform = CGAffineTransformRotate(CGAffineTransformIdentity,RADIANS(90.0));

zoomPhoto.transform = rotateTransform;