如何在Swift中将PNG转换为WebP?

时间:2018-11-20 22:55:21

标签: ios swift opencv objective-c++

我正在尝试在Swift中的Webp中转换PNG图像,我使用的唯一框架是通过 Objective-c ++ OpenCV
问题是,如果我将图像调整为512x512(这是我需要的分辨率),则会崩溃: enter image description here 如果我将图像大小调整(使用OpenCV或Swift调整大小)到另一个分辨率(例如510x510),它都不会崩溃。

奇怪的是,在模拟器上它从未崩溃,而在iPhone XS上它崩溃了90%。

如何在Swift中将PNG转换为Webp?
如果Mat是512x512,为什么OpenCV在 imwrite 指令上崩溃?

更新
OpenCV版本:3.4.2
我发现从Core Graphics框架之前处理PNG图像时会发生此问题。我需要使用它,因为我是这样将UIVIew保存为UIImage的:

map

2 个答案:

答案 0 :(得分:2)

我最终使用了另一个框架将PNG转换为WebP:https://github.com/seanooi/iOS-WebP,不得不创建包装器以快速使用它,但是效果很好

我的包装程序非常简单,但是可以满足我的需求:

#import <Foundation/Foundation.h>
#import "WebPWrapper.h"
#import "UIImage+WebP.h"

@implementation WebPWrapper
-(NSData *)convertUIImageToWebp:(UIImage *)image :(int)quality {
    NSData *webPData = [UIImage imageToWebP:image quality:quality];
    return webPData;
}
@end

swift 中,我以这种方式使用它:

let webPData = WebPWrapper().convertUIImage(toWebp: image, 90)

答案 1 :(得分:1)

Swift 4.0

同时{@ {1}}和'SDWebImage'

导入'SDWebImage/WebP'

SDWebImage