美文网首页
手写一个二维码分享

手写一个二维码分享

作者: 夜空已沉寂 | 来源:发表于2016-10-21 15:23 被阅读94次

生成一个二维码的小demo,只需要传入url网址就行了.

- (UIImage*)getImageWith:(NSString*)url{

// 1、创建滤镜对象

CIFilter*filter = [CIFilterfilterWithName:@"CIQRCodeGenerator"];

//恢复滤镜的默认属性

[filtersetDefaults];

// 2、设置数据

NSString*string_data = url;

//将字符串转换成NSdata (虽然二维码本质上是字符串,但是这里需要转换,不转换就崩溃)

NSData*qrImageData = [string_datadataUsingEncoding:NSUTF8StringEncoding];

//设置过滤器的输入值, KVC赋值

[filtersetValue:qrImageDataforKey:@"inputMessage"];

// 3、获得滤镜输出的图像

CIImage*outputImage = [filteroutputImage];

//图片小于(27,27),我们需要放大

outputImage = [outputImageimageByApplyingTransform:CGAffineTransformMakeScale(20,20)];

// 4、将CIImage类型转成UIImage类型

UIImage*start_image = [UIImageimageWithCIImage:outputImage];

// - - - - - - - - - - - - - - - -添加中间小图标- - - - - - - - - - - - - - - -

// 5、开启绘图,获取图形上下文(上下文的大小,就是二维码的大小)

UIGraphicsBeginImageContext(start_image.size);

//把二维码图片画上去(这里是以图形上下文,左上角为(0,0)点

[start_imagedrawInRect:CGRectMake(0,0, start_image.size.width, start_image.size.height)];

//再把小图片画上去

NSString*icon_imageName =@"520";

UIImage*icon_image = [UIImageimageNamed:icon_imageName];

CGFloaticon_imageW =200;

CGFloaticon_imageH = icon_imageW;

CGFloaticon_imageX = (start_image.size.width- icon_imageW) *0.5;

CGFloaticon_imageY = (start_image.size.height- icon_imageH) *0.5;

[icon_imagedrawInRect:CGRectMake(icon_imageX, icon_imageY, icon_imageW, icon_imageH)];

// 6、获取当前画得的这张图片

UIImage*final_image =UIGraphicsGetImageFromCurrentImageContext();

// 7、关闭图形上下文

UIGraphicsEndImageContext();

// 8、借助UIImageView显示二维码

return_qrCodeImage.image= final_image;

//CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];

//NSData *data = [url dataUsingEncoding:NSUTF8StringEncoding];

//[filter setValue:data forKey:@"inputMessage"];

//CIImage *outImage = filter.outputImage;

//CIContext *context = [CIContext contextWithOptions:nil];

//CGRect extent = outImage.extent;

//CGImageRef bitmapImage = [context createCGImage:outImage fromRect:extent];

//CGFloat scale = MIN(250/CGRectGetWidth(extent), 250/CGRectGetHeight(extent));

//CGContextRef bitmapRef = CGBitmapContextCreate(nil, 250, 250, 8, 0, CGColorSpaceCreateDeviceGray(), (CGBitmapInfo)kCGImageAlphaNone);

//CGContextSetInterpolationQuality(bitmapRef, kCGInterpolationNone);

//CGContextScaleCTM(bitmapRef, scale, scale);

//CGContextDrawImage(bitmapRef, extent, bitmapImage);

//CGImageRef scaleImage = CGBitmapContextCreateImage(bitmapRef);

//CGContextRelease(bitmapRef);

//CGImageRelease(bitmapImage);

//return _qrCodeImage.image = [UIImage imageWithCGImage:scaleImage];

}

最后运行结果如下图:

相关文章

  • 手写一个二维码分享

    生成一个二维码的小demo,只需要传入url网址就行了. - (UIImage*)getImageWith:(NS...

  • 请查收

    近期手写分享

  • 微信小程序之十:分享

    分享代码 分享注意事项 分享小程序二维码开发流程 二维码调用的接口,请阅读 ‘微信小程序之九:二维码’ 微信扫码...

  • 038-代码生成分享二维码-附高清及logo攻略

    一、生成分享所需二维码 所需头文件 生成分享的二维码 以上image就得到了所需二维码。不过这个二维码有点模糊,下...

  • 你冷不冷,我抱抱你吧

    如果一个人直接编程转二维码写一封情书,另一个人用手写了封情书转成二维码。这封情书和这封情书有什么区别。 要是一个人...

  • 使用Google zxing生成二维码

    二维码扫描已是时下非常常用的分享、推广的方式,Google的zxing是一个很好用的二维码工具包,本文分享如何使用...

  • 手写一个 vue 项目的webpack 的配置 1

    最近闲下来了,就做做技术分享系列文章计划分为三篇 手写一个vue的webpack配置 手写 一个 react的项目...

  • url 编码

    昨天在项目中发现了一个 bug,分享获客表单的二维码链接中没有带上分享人的 id,请求二维码的链接格式如下: 排查...

  • 小程序中对链接地址生成二维码

    需求:动态获取分享码地址,生成一个二维码,可以保存二维码图片,然后分享给其他人。解决方法:由于小程序中无法对dom...

  • 微信公众号h5转发给朋友和朋友圈显示的是URL

    以下三种入口进入分享时会显示分享卡片:   1.公众号菜单访问后分享  2.生成二维码,识别二维码后分享  3.访...

网友评论

      本文标题:手写一个二维码分享

      本文链接:https://www.haomeiwen.com/subject/zvfcuttx.html