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 imageCGRect rect = self.imageCropRect;// Draw the image into the rect[self.captureManager.stillimage drawInRect:rect];// Saving the image,ending image contextUIImage *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的大小将图像裁剪成正方形所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)