Как преобразовать PNG в WebP в Swift? - PullRequest
0 голосов
/ 21 ноября 2018

Я пытаюсь преобразовать изображение PNG в Webp в Swift, единственная среда, с которой я работал, это OpenCV - Objective-c ++ .
Проблема в том, что, если я изменяю размер изображения на 512x512 (это разрешение, которое мне нужно), происходит сбой: enter image description here Если я изменяю размер изображения (либо с OpenCV, либо с Swift) до другого разрешения (например, 510x510) не падает.

Странно то, что на симуляторе он никогда не падает, а на iPhone XS он падает в 90% случаев.

Как я могу преобразовать PNG в Webp в Swift?
Почему OpenCV падает при выполнении команды imwrite , если Mat имеет размер 512x512?

UPDATE :
Версия OpenCV: 3.4.2
Iобнаружил, что эта проблема возникает, когда изображение PNG обрабатывалось ранее из Core Graphics Framework.Мне нужно использовать его, так как я сохраняю UIVIew как UIImage следующим образом:

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

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

Swift 4.0

под обоими 'SDWebImage' И 'SDWebImage/WebP'

импорт SDWebImage

if let image_download = UIImage(data: data) {
   let photo:Data = image_download.sd_imageData(as: SDImageFormat.webP)!
}
0 голосов
/ 21 ноября 2018

В итоге я использовал другую инфраструктуру для преобразования PNG в WebP: https://github.com/seanooi/iOS-WebP, пришлось создать оболочку, чтобы использовать ее на swift, но она работает очень хорошо but

Моя оболочка очень проста, но делаетчто мне было нужно:

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