Swift中自动生成中间带小头像的二维码

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

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

//text是二维码要带入的信息,sizeH是二维码的高度

//创建滤镜

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: sizeH)

//创建一个头像

let icon = UIImage(named: "icon")

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

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, 0, 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)

}

时间: 2024-10-05 19:03:38

Swift中自动生成中间带小头像的二维码的相关文章

使用javascript生成当前博文地址的二维码图片

前面的话 在电脑端发现一篇好的博文,想在手机上访问.这时,就必须打开手机浏览器输入长长的URL地址才行,非常不方便.如果在博客标题的后面跟一张小的图片,点击该图片后,出现一张二维码的大图,然后再通过手机扫一扫,来进行博文的访问,就相对方便很多. 通过搜索引擎搜索了一些生成二维码的文章,发现其并不是一件容易的事.同时,也发现了qrcode插件,该插件专门用于生成二维码.于是,在qrcode的基础上,实现了一个二维码插件qr 效果演示 如果细心的话,会发现该博文标题的后面紧跟着一个表示二维码的手机小

微信中打开网页或者扫一扫二维码直接默认浏览器实现方式

相信做微信推广的朋友一定都遇到这种情况的,当你的网页中有直接链接apk下载的时候会没有反映的,是因为在微信内是无法下载软件.手机APP等,那么这个时候一般的解决方案就是:跳转到手机浏览器打开我们的推广链接,这个要怎么做呢? 月牙跳转是一款基于微信后端开发了一款微信营销下载推广助手,使用了本插件生成的链接,用户在微信任意环境下点击链接或者扫描二维码,可以实现直接跳转手机默认浏览器并打开指定网页. 1.打开 月牙跳转 网址:http://www.aizhuanlove.cn/ 2.准备好我们的推广链

微信公众号怎么生成能追踪效果的二维码?

微号帮平台微信渠道二维码功能介绍:为了满足用户渠道推广分析的需要,微信公众平台提供了生成带参数二维码的接口.使用该接口可以获得多个带不同场景值的二维码,用户扫描后,微信公众号可以接收到事件推送.现在只需要使用微号帮平台对各个渠道生成不同的二维码就可以轻松解决这个问题,微号帮平台实时观察每个渠道的吸粉情况,哪个渠道粉丝多,哪个渠道粉丝少,一目了然.下次投放广告也可以针对性的在粉丝多的渠道搞一些特色优惠活动,这样不经增加了营业额,还能提高粉丝的忠诚度和认同感.微信公众号怎么生成能追踪效果的二维码?操

微信小程序获取二维码并把logo替换为自己的头像

$avatarUrl = 'http://cms-bucket.nosdn.127.net/2018/05/28/a1a44ffdc2d24f928c1860d4fbf54703.jpeg?imageView&thumbnail=550x0'; $logo = yuanImg($avatarUrl); $QR = createQrCode("pages/me/index", "id=1"); $sharePic = qrcodeWithLogo($QR, $

有哪些好用的在线工具 小工具 截图 二维码生成 等等 持续更新

二维码生成  http://codeid.xmesm.cn/ 部分效果预览: 原文地址:https://www.cnblogs.com/stillstep/p/11141782.html

生成带参数的微信二维码

场景:用户扫描带参数的二维码,可能推送以下两种事件: 1.如果用户还未关注公众号,则用户可以关注公众号,关注后微信会将带场景值关注事件推送给开发者.2.如果用户已经关注公众号,在用户扫描后会自动进入会话,微信也会将带场景值扫描事件推送给开发者.说明:是将参数返回给开发者,不是给用户推送特定信息或跳转到页面. 步骤:1.登录你的微信公众号,点击左下角[接口权限],然后找到“生成带参数的二维码”,点击进入,这样我们就到了微信开发者文档的相关地方了.2.调试工具,在此页中找到[使用网页调试工具调试该接

小程序——分享二维码报告

小程序分享报告(图片+二维码): 小程序页面生成图片:请用canvas,页面简单用canvas,页面复杂也用canvas. 踩过的坑: 思路:html  ->  html2canvas  ->  canvas||image/png; 最后涉及到小程序与H5页面项目连接问题(web-view &分享页面),还是用canvas老老实实画的 Bug1:小程序,不支持js获取Dom操作, 解决1:单独写https的一个H5页面来操作Dom.     <web-view  src='htt

微信小程序获取二维码(直接上代码)https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=ACCESS_TOKEN

应为是直接返回二进制数据所有与其他接口些许差别,希望能帮助现在的你! 谢谢!!!    /** * 37.微信二维码生成 */ public String getWeiXinCourseMap() { String courseId = StringUtils.defaultString(getPara("courseId")); String codeUrl = ""; String path = "你的二维码指向路径(可以拼接参数)"; tr

随手记一次利用开源zxing生成带嵌入logo的二维码图片

之前就在项目里面用过zxing生成二维码,最近另一个项目同样需要用到二维码,故重新在学了学利用zxing生成二维码 接下来先做准备工作了,因为我是用vs2013上开发的,故选择了.net4.5版本的zxing.dll.另外准备了一张准备嵌入的图片,代码如下: 1 using System; 2 using System.Collections; 3 using System.Collections.Generic; 4 using System.Drawing; 5 using System.L