2

我有一个图像视图,显示从相机或画廊拍摄的方面适合图像。在 Imageview 的顶部,我放置了一个 UIView(可移动、可缩放)。

我想相对于 UIView 的框架裁剪图像的区域。

所以我这样做了:

CGImageRef imageRef = CGImageCreateWithImageInRect([myImageView.image CGImage], cropV.frame);// cropV is the UIview over the myImageView

UIImage *img = [UIImage imageWithCGImage:imageRef];

CGImageRelease(imageRef);

问题是当我这样做时,我的矩形(UIview)在图像上的实际位置(尺寸很大)是不一样的。

例如。对于 1024x1024 图像,在 320x480 屏幕上的宽高比适合模式下,如果我的cropV 在帧上(10,10,300,300),图像 a 的表现会有所不同;CGImageCreateWithImageInRect 将根据 1024x1024 图像创建图像。

有没有办法可以根据图像大小缩放cropV 帧?这样矩形(cropV)就只是裁剪了那部分。

现在我在上下文中绘制图像。但这给我带来了宽屏/优质高清照片的模糊裁剪。

UIGraphicsBeginImageContext(myImageView.frame.size);

[myImageView.layer renderInContext:UIGraphicsGetCurrentContext()];

UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

CGImageRef imageRef = CGImageCreateWithImageInRect([viewImage CGImage], cropV.frame); 
4

1 回答 1

0

您可以代表您的图像和视图获得比率,然后进行调整。

float ratio = yourImage.size.height/yourView.frame.size.height;  

尝试这个

wRatio_width = myImageView.image.size.width/cropV.frame.size.width;
wRatio_height = myImageView.image.size.height/cropV.frame.size.height;
CGRect headImageRect = cropV.frame;
headImageRect.origin.x=wRatio_width * headImageRect.origin.x;
headImageRect.origin.y=wRatio_height * headImageRect.origin.y;

headImageRect.size.width=wRatio_width * headImageRect.size.width;
headImageRect.size.height=wRatio_height * headImageRect.size.height;

cropV.frame=headImageRect;
于 2013-05-30T05:01:09.957 回答