iOS   发布时间:2022-03-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 根据UIView / CGRect的大小将图像裁剪成正方形大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有AVCaptureSession的实现,我的目标是让用户拍摄照片,只将图像的一部分保存在红色方块边框内,如下图所示:

AVCaptureSession的previewLayer(相机)从(0,0)(左上角)跨越到我的相机控制栏(位于包含快门的视图的正上方)的底部.我的导航栏和控制栏是半透明的,所以相机可以显示.

我正在使用[captureSession setSessionPreset:AVCaptureSessionPresetPhoto];以确保保存到相机胶卷的原始图像与Apple的相机一样.

用户将能够以纵向,横向左右拍摄照片,因此裁剪方法必须虑到这一点.

到目前为止,我已经尝试使用这段代码裁剪原始图像:

DDLogVerbose(@"%@: Image crop rect: (%f,%f,%f)",THIS_FILE,self.imageCropRect.origin.x,self.imageCropRect.origin.y,self.imageCropRect.size.width,self.imageCropRect.size.height);

// Create new image context (reTina safE)
UIGraphicsBeginImageContextWithOptions(CGSizeMake(self.imageCropRect.size.width,self.imageCropRect.size.width),NO,0.0);

// Create rect for image
CGRect rect = self.imageCropRect;

// Draw the imag@R_772_9473@o the rect
[self.captureManager.stillImage drawInRect:rect];

// Saving the image,ending image context
UIImage *croppedImage = UIGraphicsGetImageFromCurrentImageContext();

但是,当我看着相机胶卷中的裁剪图像时,似乎已经压缩了原始图像,并且不像我想要的那样丢弃图像的顶部和底部.它也导致“裁剪”图像顶部的53像素的空白,可能是因为我的CGRect的位置.

这是CGRect的日志输出

Image crop rect: (0.000000,53.000000,320.000000,322.000000)

这也描述了超视图中红色边框视图的框架.

有什么重要的我俯瞰吗?

附:原始图像尺寸(以纵向模式拍摄)为:

Original image size: (2448.000000,3264.000000)

解决方法

您可以使用CGImageCreateWithImageInRect裁剪图像:
CGImageRef imageRef = CGImageCreateWithImageInRect([uncroppedImage CGImage],bounds);
UIImage *croppedImage = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);

大佬总结

以上是大佬教程为你收集整理的ios – 根据UIView / CGRect的大小将图像裁剪成正方形全部内容,希望文章能够帮你解决ios – 根据UIView / CGRect的大小将图像裁剪成正方形所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。