GPUImage之裁剪篇

fpkoko發表於2017-12-13

在錄製視訊或者拍照的時候,我們經常要對視訊或者照片的尺寸進行裁剪.比如微信小視訊.在GPUImage中,給我們了一個非常友好的濾鏡.GPUImageCropFilter 可以直接剪下視訊的尺寸. 首先依舊是先定義裝置.濾鏡.一級GPUImageView.在拍照篇裡面可以找到.這裡就不做重複了.唯一不同的是GPUImageCropFilter的定義 程式碼如下:

    filter=[[GPUImageCropFilter alloc] initWithCropRegion:CGRectMake(0, 0, 1, 1080/1920.0)];
複製程式碼

這裡的corpRegion介紹如下:

// The crop region is the rectangle within the image to crop. It is normalized to a coordinate space from 0.0 to 1.0, with 0.0, 0.0 being the upper left corner of the image
複製程式碼

所以可以看到,長和寬都是0.0到1.0;所以我們要用裝置捕捉到的長和寬來擷取視訊.x軸和y軸都可以是初始點0. 顯示到螢幕上的就是將來擷取出來的.

視訊設定也要修改一下. 改為:

    videoSettings = [[NSMutableDictionary alloc] init];
    [videoSettings setObject:AVVideoCodecH264 forKey:AVVideoCodecKey];
    [videoSettings setObject:[NSNumber numberWithInteger:1080] forKey:AVVideoWidthKey];
    [videoSettings setObject:[NSNumber numberWithInteger:1080] forKey:AVVideoHeightKey]; //如果修改了高度值.這裡自然要修改.
複製程式碼

GPUImageMovieWriter的size也要改.

    movieWriter = [[GPUImageMovieWriter alloc] initWithMovieURL:movieURL size:CGSizeMake(1080, 1080) fileType:AVFileTypeQuickTimeMovie outputSettings:videoSettings];
複製程式碼

然後錄影儲存什麼的,和攝像篇是一樣的. 至此,GPUImage差不多就完了.如果有需要.後面會繼續補充.

ps:裁剪對拍照也是一樣的.如果照片不像裁剪.那就更換一下濾鏡.其他濾鏡釋放方法幾乎都是一樣的

相關文章