//MARK: -传进去字符串,生成二维码图片

private func creatQRCodeImage(text: String) -> UIImage{

//创建滤镜

let filter = CIFilter(name: "CiqrCodeGenerator")

//还原滤镜的默认属性

filter?.setDefaults()

//设置需要生成二维码的数据

filter?.setValue(text.dataUsingEncoding(NSUTF8StringEncoding),forKey: "inputMessage")

//从滤镜中取出生成的图片

let ciImage = filter?.outputimage

//这个清晰度不好

//let bgImage = UIImage(CIImage: ciImage!)

//这个清晰度好

let bgImage = createNonInterpolatedUIImageFormCIImage(ciImage!,size: 300)

//创建一个头像

let icon = UIImage(named: "navigationbar_pop_highlighted")

//合成图片(把二维码和头像合并)

let newImage = creatimage(bgImage,iconImage: icon!)

//返回生成好的二维码

return newImage

}

//MARK: - 根据背景图片和头像合成头像二维码

private func creatimage(bgImage: UIImage,iconImage:UIImage) -> UIImage{

//开启图片上下文

UIGraphicsBeginImageContext(bgImage.size)

//绘制背景图片

bgImage.drawInRect(CGRect(origin: CGPointZero,size: bgImage.size))

//绘制头像

let width: CGFloat = 50

let height: CGFloat = width

let x = (bgImage.size.width - width) * 0.5

let y = (bgImage.size.height - height) * 0.5

iconImage.drawInRect(CGRect(x: x,y: y,width: width,height: height))

//取出绘制好的图片

let newImage = UIGraphicsGetimageFromCurrentimageContext()

//关闭上下文

UIGraphicsEndImageContext()

//返回合成好的图片

return newImage

}

//MARK: -根据CIImage生成指定大小的高清UIImage

private func createNonInterpolatedUIImageFormCIImage(image: CIImage,size: CGFloat) -> UIImage {

let extent: CGRect = CGRectIntegral(image.extent)

let scale: CGFloat = min(size/CGRectGetWidth(extent),size/CGRectGetHeight(extent))

let width = CGRectGetWidth(extent) * scale

let height = CGRectGetHeight(extent) * scale

let cs: CGColorSpaceRef = CGColorSpaceCreateDeviceGray()!

let bitmapRef = CGBitmapContextCreate(nil,Int(width),Int(height),8,cs,0)!

let context = CIContext(options: nil)

let bitmapImage: CGImageRef = context.createCGImage(image,fromrect: extent)

CGContextSetInterpolationQuality(bitmapRef,CGInterpolationQuality.None)

CGContextScaleCTM(bitmapRef,scale,scale);

CGContextDrawImage(bitmapRef,extent,bitmapImage);

let scaledImage: CGImageRef = CGBitmapContextCreateImage(bitmapRef)!

return UIImage(CGImage: scaledImage)

}

swift系统自带二维码的生成的更多相关文章

  1. 手对手的教你用canvas画一个简单的海报的方法示例

    企业的广告投入开始从电视等传统媒体向基于圈层文化的新媒体精准营销转移,很多人都想制作一张属于自己的海报,本文介绍了手对手的教你用canvas画一个简单的海报的方法示例,感兴趣的可以了解一下

  2. Swift AVFoundation 二维码扫描和生成

    项目终于不需要支持iOS6了(泪崩),在二维码扫描这一块,能够完全的放弃ZXing库,改用系统的AVFoundation了,拿swift写了个Demo,效果如下:github地址:点这里有关AVFoundation和CoreImage(滤镜等),可以先看看objc.io第21期和第23期的有关介绍.初始化视频捕捉PS:LZ用了下微信和新浪微博的扫一扫,发现那个扫描框是忽悠人的,也就是你没拿它对准二维码,只要二维码进入手机摄像头范围,就能够解码成功…

  3. Swift - 生成二维码

    CIFilter提供了各种各样的滤镜,其中CiqrCodeGenerator可以用来生成二维码。下面通过一个样例演示如何将字符串生成二维码图片,同时支持在二维码中间放置个性化图标。效果图如下:代码如下:123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263importUIKitclassViewController:UIView

  4. Swift - 二维码QRCode的读取

    1,直接读取图片中的二维码使用CIDetector可以很方便的检测并读取二维码。context=CIContextdetector:CIDetectorfeatures=detector.featuresInImageprint//遍历所有的二维码,并框出forfeatureinfeaturesas![CiqrCodeFeature]{}}didReceiveMemoryWarning(){.didReceiveMemoryWarning()}}控制台输出如下:扫描到二维码个数:2http://www.h

  5. Swift系统自带二维码的扫描使用

    session.canAddInput{return}//判断是否能够将输出添加到回话中if!session.canAddOutput{return}//将输入和输出添加到回话中session.addInputsession.addOutput//设置输入能够解析的数据类型//设置能解析的数据类型,一定要在输出对象添加到会员之后设置output.MetadataObjectTypes=output.availableMetadataObjectTypes//设置输出对象的代理,只要解析成功,就会通知代理o

  6. swift系统自带二维码的生成

    .setDefaults()//设置需要生成二维码的数据filter?.setValue//从滤镜中取出生成的图片letciImage=filter?.outputimage//这个清晰度不好//letbgImage=UIImage(CIImage:ciImage!,size:300)//创建一个头像leticon=UIImage//合成图片letnewImage=creatimage(bgImage,iconImage:icon!)//返回生成好的二维码returnnewImage}//MARK:-根据

  7. swift编程语言简单开发二维码扫描

    )类型8.do{9.letinput=tryAVCaptureDeviceInput10.returninput11.}catch{12.print13.returnnil14.}15.}()16.//创建会话/输出比较简单只需要创建一个对象17.privatelazyvarsession:AVCaptureSession=AVCaptureSession()18.//创建输出设备19.privatelazyvardeviceOutput:AVCaptureMetadataOutput=AVCapture

  8. Swift快速集成函数使用篇(生成二维码)

    1代码生成的二维码E312AE79-44A0-472E-938C-5599B04CA92A.png2一行代码集成3生成二维码代码文/Hcy_原文链接:http://www.jianshu.com/p/8872f96587e9

  9. 使用 Swift 创建简单的二维码扫描应用

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  10. swift生成二维码,扫描二维码

    ~~~写在前面的话~~~我之前打算做一个APP,然后把电话号码生成二维码或者条形码,用手机扫描,这样,就不用担心会输入错误电话号码了。在下面是实现的扫描二维码的功能中,扫描完成,将会把扫描到的号码拨打出去。D、在main.storyboard中添加控件:E、在viewcontroller.swift做关联:F、同理,在viewcontroller.swift关联按钮的事件G、关联完成,接着就在viewcontroller.swift中调用创建二维码了生成二维码,当然是写在这个按钮下啦。

随机推荐

  1. Swift UITextField,UITextView,UISegmentedControl,UISwitch

    下面我们通过一个demo来简单的实现下这些控件的功能.首先,我们拖将这几个控件拖到storyboard,并关联上相应的属性和动作.如图:关联上属性和动作后,看看实现的代码:

  2. swift UISlider,UIStepper

    我们用两个label来显示slider和stepper的值.再用张图片来显示改变stepper值的效果.首先,这三个控件需要全局变量声明如下然后,我们对所有的控件做个简单的布局:最后,当slider的值改变时,我们用一个label来显示值的变化,同样,用另一个label来显示stepper值的变化,并改变图片的大小:实现效果如下:

  3. preferredFontForTextStyle字体设置之更改

    即:

  4. Swift没有异常处理,遇到功能性错误怎么办?

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  5. 字典实战和UIKit初探

    ios中数组和字典的应用Applicationschedule类别子项类别名称优先级数据包contactsentertainment接触UIKit学习用Swift调用CocoaTouchimportUIKitletcolors=[]varbackView=UIView(frame:CGRectMake(0.0,0.0,320.0,CGFloat(colors.count*50)))backView

  6. swift语言IOS8开发战记21 Core Data2

    上一话中我们简单地介绍了一些coredata的基本知识,这一话我们通过编程来实现coredata的使用。还记得我们在coredata中定义的那个Model么,上面这段代码会加载这个Model。定义完方法之后,我们对coredata的准备都已经完成了。最后强调一点,coredata并不是数据库,它只是一个框架,协助我们进行数据库操作,它并不关心我们把数据存到哪里。

  7. swift语言IOS8开发战记22 Core Data3

    上一话我们定义了与coredata有关的变量和方法,做足了准备工作,这一话我们来试试能不能成功。首先打开上一话中生成的Info类,在其中引用头文件的地方添加一个@objc,不然后面会报错,我也不知道为什么。

  8. swift实战小程序1天气预报

    在有一定swift基础的情况下,让我们来做一些小程序练练手,今天来试试做一个简单地天气预报。然后在btnpressed方法中依旧增加loadWeather方法.在loadWeather方法中加上信息的显示语句:运行一下看看效果,如图:虽然显示出来了,但是我们的text是可编辑状态的,在storyboard中勾选Editable,再次运行:大功告成,而且现在每次单击按钮,就会重新请求天气情况,大家也来试试吧。

  9. 【iOS学习01】swift ? and !  的学习

    如果不初始化就会报错。

  10. swift语言IOS8开发战记23 Core Data4

    接着我们需要把我们的Rest类变成一个被coredata管理的类,点开Rest类,作如下修改:关键字@NSManaged的作用是与实体中对应的属性通信,BinaryData对应的类型是NSData,CoreData没有布尔属性,只能用0和1来区分。进行如下操作,输入类名:建立好之后因为我们之前写的代码有些地方并不适用于coredata,所以编译器会报错,现在来一一解决。

返回
顶部