如何在 Swift 中将 PNG 转换为 WebP?
How to convert a PNG to a WebP in Swift?
我正在尝试在 Swift 的 Webp 中转换 PNG 图像,我使用的唯一框架是 OpenCV 到 Objective-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)!
}
我正在尝试在 Swift 的 Webp 中转换 PNG 图像,我使用的唯一框架是 OpenCV 到 Objective-c++。
问题是,如果我将图像的大小调整为 512x512(这是我需要的分辨率),它会崩溃:
奇怪的是,在模拟器上它从不崩溃,而在 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)!
}