开发者社区> 问答> 正文

如何从基本64字串的宽度和高度设置图像转换?

我有一个关于UIImage转换为Base 64字符串的问题。 我已经调整了图像的宽度和高度(1024x768)。 然后,我将此图像转换为Base 64字符串。 但是,当我使用这个Base 64字符串来查看UIImage并查看图像的宽度和高度时,我不会在(2304.0 x 3072.0)之前调整大小。 如何使我的base 64字符串图像大小正确?

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()
    }

}

展开
收起
游客5akardh5cojhg 2019-12-05 22:27:17 422 0
1 条回答
写回答
取消 提交回答
  • 尝试这样做,下面的代码会调整您的图像大小,并且应该在您将其更改为Base 64之前添加它。

    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(0.2)) else { return }
    
    2019-12-06 13:06:53
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
重新定义计算的边界 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载