【问题标题】:Crop image to specified size and picture location将图像裁剪到指定大小和图片位置
【发布时间】:2014-01-18 19:06:31
【问题描述】:

我有一张正在使用 AVCaptureSession 拍摄并返回到我的视图控制器的图像。

这是相机界面的屏幕截图:

AVCaptureSession 拍摄全屏照片,现在我想将其裁剪为上面可见窗口的大小。

窗口将始终位于相同的位置和相同的大小。

高度 = 360(180 非视网膜)像素,宽度 = 640(320 非视网膜)像素,x = 0,y = 160。

如何将图像裁剪到这些坐标,以便图像本身现在是 360 x 640?

任何帮助都会很棒,谢谢!

【问题讨论】:

    标签: ios uiimage crop avcapturesession


    【解决方案1】:

    你需要做这样的事情。我是在脑海中打出来的,所以这可能不是 100% 正确的。

    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
    CGContextRef context = CGBitmapContextCreate(NULL, 640, 360, 8, 4 * width, colorSpace, kCGImageAlphaPremultipliedFirst);
    CGColorSpaceRelease(colorSpace);
    
    CGContextDrawImage(context, CGRectMake(0,-160,640,360), cgImgFromAVCaptureSession);
    
    CGImageRef image = CGBitmapContextCreateImage(context);
    UIImage* myCroppedImg = [UIImage imageWithCGImage:image];
    CGContextRelease(context);      
    

    【讨论】:

    • 我现在正在尝试实现这个,但是 4 * 宽度应该是多少?此外,捕获管理器返回一个 UIImage,所以我不得不使用 (_bridge CGImageRef)(capturedImage)。这会有所作为吗?
    • 你可以通过img.CGImage从UIImage获取cgImage。 4 代表 RGBA 的每像素 4 个字节。
    • 另外,对不起,我的意思是用 640 代替宽度,所以你可以只使用 4*640 或为你的宽度和高度设置变量。此外,-160 是 y 偏移量,也可以是变量。
    • 这是我最近的一次!所以它以一种奇怪的方式裁剪了图像。它基本上将整个图像转向侧面并将其切成两半。我会稍微玩一下这些值。创建上下文时我也收到警告:“从枚举类型'enum CGImageAlphaInfo'到不同枚举类型'CGBitmapInfo'(又名'enum CGBitmapInfo')的隐式转换。知道那是什么吗?
    • 实际上,如果我将矩形更改为 (0, 0, 640, 360),它基本上是在拍摄图像并将其侧向转动,但它完全适合我发送到的 UIImageView
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-19
    • 2010-10-19
    • 1970-01-01
    • 2012-03-12
    • 1970-01-01
    • 2020-06-05
    • 1970-01-01
    相关资源
    最近更新 更多