如何设置从base64字符串的宽度和高度转换图像?

问题描述 投票:1回答:1

我对将UIImage转换为base64字符串有疑问。而且我已经调整了图像的宽度和高度(1024 x 768)。然后,我将此图像转换为base64字符串。但是,当我使用此base64 String到UIImage并查看图像的宽度和高度时,我之前没有调整大小(2304.0 x 3072.0)。如何正确设置我的base64字符串图像大小?

guard let image = image else { return }
print("image => \(image)") 
//image => <UIImage:0x283cce7f0 anonymous {768, 1024}>

guard let base64ImageString = image.toBase64(format: .jpeg(0.2)) else { return }

let dataDecoded : Data = Data(base64Encoded: base64ImageString, options: .ignoreUnknownCharacters)!
let decodedimage = UIImage(data: dataDecoded)
let height = decodedimage?.size.height
let width = decodedimage?.size.width
print("====) \(String(describing: width)) / \(String(describing: height))")
//====) Optional(2304.0) / Optional(3072.0)
public enum ImageFormat {
    case png
    case jpeg(CGFloat)
}

extension UIImage {

    public func toBase64(format: ImageFormat) -> String? {
        var imageData: Data?

        switch format {
        case .png:
            imageData = self.pngData()
        case .jpeg(let compression):
            imageData = self.jpegData(compressionQuality: compression)
        }

        return imageData?.base64EncodedString()
    }

}
ios swift uiimage tobase64string
1个回答
0
投票

尝试这种方式,下面的代码调整图像的大小,应该在将其更改为base64之前添加它。

guard let image = image else { return }
print("image => \(image)") 
//image => <UIImage:0x283cce7f0 anonymous {768, 1024}>

let desiredSize = CGSize(width: 768, height: 1024)

UIGraphicsBeginImageContextWithOptions(desiredSize, false, 1.0)
image.draw(in: CGRect(origin: CGPoint.zero, size: CGSize(width: 
desiredSize.width, height: desiredSize.height)))

let resizedImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()

guard let base64ImageString = image.toBase64(format: .jpeg(1.0)) else { return }
© www.soinside.com 2019 - 2024. All rights reserved.