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

How to convert a PNG to a WebP in Swift?

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

奇怪的是,在模拟器上它从不崩溃,而在 iPhone XS 上它有 90% 的时间崩溃。

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

更新
OpenCV 版本:3.4.2
我发现这个问题发生在 PNG 图像之前从 Core Graphics 框架中得到处理时。我需要使用它,因为我以这种方式将 UIVIew 保存为 UIImage:

let renderer = UIGraphicsImageRenderer(bounds: bounds)
        return renderer.image { rendererContext in
            layer.render(in: rendererContext.cgContext)
        }

我最终使用另一个框架将 PNG 转换为 WebP:https://github.com/seanooi/iOS-WebP,必须创建包装器才能在 swift 上使用它,但效果很好

我的包装器非常简单,但可以满足我的需要:

#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)

Swift 4.0

pod 两个 'SDWebImage' ( https://github.com/SDWebImage/SDWebImage ) AND 'SDWebImage/WebP' ( https://github.com/SDWebImage/SDWebImageWebPCoder )

进口SDWebImage

if let image_download = UIImage(data: data) {
   let photo:Data = image_download.sd_imageData(as: SDImageFormat.webP)!
}