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

sg24os4d  于 2023-10-24  发布在  Swift
关注(0)|答案(3)|浏览(158)

我试图在Swift中转换Webp中的PNG图像,我唯一的工作框架是OpenCV通过 * Open-c ++*。
问题是,如果我将图像大小调整为512 x512(这是我需要的分辨率),它会崩溃:x1c 0d1x如果我将图像大小调整为另一个分辨率(例如510 x510),它不会崩溃。
奇怪的是,在模拟器上它从来没有崩溃,而在iPhone XS上它崩溃了90%的时间。
如何在Swift中将PNG转换为Webp?
如果Mat是512 x512,为什么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)
        }
drkbr07n

drkbr07n1#

Swift 4.0
pod 'SDWebImage'https://github.com/SDWebImage/SDWebImage)和'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)!
}
dy2hfwbg

dy2hfwbg2#

我最终使用另一个框架将PNG转换为WebP:https://github.com/seanooi/iOS-WebP,必须创建 Package 器才能在Swift上使用它,但它工作得非常好。
我的 Package 很简单,但做了我需要的:

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

wfveoks03#

对于任何人只是想将图像转换为WEBP格式:
首次安装:https://github.com/SDWebImage/SDWebImageWebPCoder

import SDWebImageWebPCoder
...

let image = UIImage(...) // define the image    

let webpData = SDImageWebPCoder.shared.encodedData(with: image, format: .webP, options: nil)!

let webpImage = UIImage(data: webpData)!

相关问题