1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- //
- // 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
- }
-
- }
|