// // UIImage+Placeholder.swift // SwiftBilibili // // Created by 罗文 on 2021/1/19. // Copyright © 2021年 罗文. All rights reserved. // import UIKit import SwiftyImage extension UIImage { class func placeholderImage(bgColor:UIColor = .db_gray,bgSize:CGSize) -> UIImage? { if bgSize == .zero { return nil } let bgImage = UIImage.size(bgSize).color(bgColor).image let centerImage = NYImage.Home.default_img! let placeholderImage = bgImage + centerImage return placeholderImage } class func resizeImage(image:UIImage?,newSize:CGSize) -> UIImage? { guard let image = image else { return nil } UIGraphicsBeginImageContext(newSize) image.draw(in: CGRect(x: 0, y: 0, width: newSize.width, height: newSize.height)) let newImage = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return newImage } class func generateQRCode(from jsonString: String, size: CGSize) -> UIImage? { // 将 JSON 字符串转换为二进制数据 guard let jsonData = jsonString.data(using: .utf8) else { return nil } // 创建 CIFilter 对象,使用 "CIQRCodeGenerator" 过滤器生成二维码 guard let filter = CIFilter(name: "CIQRCodeGenerator") else { return nil } // 设置输入数据 filter.setValue(jsonData, forKey: "inputMessage") // 设置纠错级别,默认为 "L" (低) filter.setValue("M", forKey: "inputCorrectionLevel") // 获取生成的 CIImage guard let ciImage = filter.outputImage else { return nil } // 对 CIImage 进行缩放,以适应目标大小 let scaleX = size.width / ciImage.extent.size.width let scaleY = size.height / ciImage.extent.size.height let transformedImage = ciImage.transformed(by: CGAffineTransform(scaleX: scaleX, y: scaleY)) // 将 CIImage 转换为 UIImage let context = CIContext() guard let cgImage = context.createCGImage(transformedImage, from: transformedImage.extent) else { return nil } let qrCodeImage = UIImage(cgImage: cgImage) return qrCodeImage } }