Commit e7a42610 authored by 刘俊宏's avatar 刘俊宏

完成生产二维码图片和保存二维码

parent 5f4e8e1a
......@@ -7,9 +7,68 @@
//
import Foundation
//测试环境为:http://c.gelifood.com
//生产环境为:https://cms.gelifood.com
class GeliAltetCodeView: UIView {
var saveImgID: Int? = nil{
didSet{
saveImg = createQRForString(qrString: "https://cms.gelifood.com/market/src/views/Order/codeDetail.html?order_id=" + StringByInt(number: saveImgID!),
qrImageName: "")
iconImgV.image = saveImg
}
}
var saveImg: UIImage? = nil
//创建二维码图片
func createQRForString(qrString: String?, qrImageName: String?) -> UIImage?{
if let sureQRString = qrString {
let stringData = sureQRString.data(using: .utf8,
allowLossyConversion: false)
// 创建一个二维码的滤镜
let qrFilter = CIFilter(name: "CIQRCodeGenerator")!
qrFilter.setValue(stringData, forKey: "inputMessage")
qrFilter.setValue("H", forKey: "inputCorrectionLevel")
let qrCIImage = qrFilter.outputImage
// 创建一个颜色滤镜,黑白色
let colorFilter = CIFilter(name: "CIFalseColor")!
colorFilter.setDefaults()
colorFilter.setValue(qrCIImage, forKey: "inputImage")
colorFilter.setValue(CIColor(red: 0, green: 0, blue: 0), forKey: "inputColor0")
colorFilter.setValue(CIColor(red: 1, green: 1, blue: 1), forKey: "inputColor1")
// 返回二维码image
let ciimage = colorFilter.outputImage!
.transformed(by: CGAffineTransform(scaleX: 5, y: 5))
let context = CIContext()
let imageRef = context.createCGImage(ciimage, from: ciimage.extent)
let codeImage = UIImage(cgImage: imageRef!)
// 经过一番测试,发现方法[UIImage imageWithCIImage:codeImage];生产的UIImage并不算是实际意义上的图片UIImage.CGImage为nil,而相册保存方法UIImageWriteToSavedPhotosAlbum所保存的就是UIImage.CGImage
// 通常,二维码都是定制的,中间都会放想要表达意思的图片
if let iconImage = UIImage(named: qrImageName!) {
let rect = CGRect(x:0, y:0, width:codeImage.size.width,
height:codeImage.size.height)
UIGraphicsBeginImageContext(rect.size)
codeImage.draw(in: rect)
let avatarSize = CGSize(width:rect.size.width * 0.25,
height:rect.size.height * 0.25)
let x = (rect.width - avatarSize.width) * 0.5
let y = (rect.height - avatarSize.height) * 0.5
iconImage.draw(in: CGRect(x:x, y:y, width:avatarSize.width,
height:avatarSize.height))
let resultImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return resultImage
}
return codeImage
}
return nil
}
@IBOutlet weak var titleLbl: UILabel!
@IBOutlet weak var outBtn: UIButton!
@IBAction func outAction(_ sender: UIButton) {
......@@ -21,7 +80,9 @@ class GeliAltetCodeView: UIView {
HUD.flash(.label("等待图片加载完毕"),delay: 1.2)
return
}else{
UIImageWriteToSavedPhotosAlbum(saveImg!, nil, nil, nil)
let image = self.iconImgV.image!
print(image)
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil)
HUD.flash(.label("保存成功"),delay: 1.2)
}
......
......@@ -65,16 +65,7 @@ class WorkCViewController: BaseViewController, UITableViewDelegate, UITableViewD
})
}
browser.show()
// let alertView = GeliAltetCodeView(frame: self.view.window!.bounds)
//
// alertView.iconImgV.sd_setImage(with: URL(string:SERVERCE_ImageHost + (self.dataModel?.qr_code)!)) { (image, error, cacheType, imageURL) in
// //已下载
// alertView.saveImg = image
//
// }
// self.view.window?.addSubview(alertView)
}
//MARK:--头部按钮方法
let selectV = WorkSelectTimeView()
......
......@@ -208,7 +208,7 @@ class OrderListVC: BaseViewController, UITableViewDelegate, UITableViewDataSourc
cell.countLbl.text = "商品数量:\(rowModel.goods_number!)"
cell.priceLbl.text = "金额:¥\(rowModel.sum_amount!)"
cell.delegate = self
return cell
}
//MARK:--如果存在操作是否需要自动刷新?
......@@ -224,6 +224,11 @@ class OrderListVC: BaseViewController, UITableViewDelegate, UITableViewDataSourc
alertView.rightBtn.setAttributedTitle(NSAttributedString(string: "确认"), for: .normal)
alertView.rightBtn.tag = rowModel.order_id!
self.view.window?.addSubview(alertView)
//MARK:--付款码测试完成
// let alertView = GeliAltetCodeView(frame: self.view.window!.bounds)
//
// alertView.saveImgID = rowModel.order_id!
// self.view.window?.addSubview(alertView)
}
var isSrueOrder = false
func submit(sender: UIButton) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment