- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章IOS 创建彩色二维码实例详解由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
IOS 创建彩色二维码 。
因为系统创建的二维码默认都是黑色的,所以突然想改变一下二维码颜色,具体操作有点复杂,而且其中用到了好多C语言的语法,Swift不好写,所以默认用了OC。只贴了.m文件的代码,.h文件就是几个类函数的声明.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
#import "UIImage+CreateQRCode.h"
@implementation UIImage (CreateQRCode)
+ (UIImage *)createQRCode:(NSString *)string andSize:(CGSize)size andColor:(UIColor *)color {
UIImage *qrcode = [self createNonInterpolatedUIImageFormCIImage:[self createQRForString:string] withSize:size];
const
CGFloat *_components = CGColorGetComponents(color.CGColor);
CGFloat red = _components[0] * 255.f;
CGFloat green = _components[1] * 255.f;
CGFloat blue = _components[2] * 255.f;
return
[self imageBlackToTransparent:qrcode withRed:red andGreen:green andBlue:blue];
}
+ (
void
)setImageViewShadow:(UIImageView *)view {
view.layer.shadowOffset = CGSizeMake(0, 2);
view.layer.shadowRadius = 2;
view.layer.shadowColor = [UIColor blackColor].CGColor;
view.layer.shadowOpacity = 0.5;
view.backgroundColor = [UIColor clearColor];
}
#pragma mark - 创建灰度图,只有灰度图才能改变颜色
+ (UIImage *)createNonInterpolatedUIImageFormCIImage:(CIImage *)image withSize:(CGSize)size {
CGRect extent = CGRectIntegral(image.extent);
CGFloat scale = MIN(size.width/CGRectGetWidth(extent), size.height/CGRectGetHeight(extent));
size_t
width = CGRectGetWidth(extent) * scale;
size_t
height = CGRectGetHeight(extent) * scale;
// iOS不支持设备依赖颜色空间或通用颜色空间。iOS应用程序必须使用设备颜色空间
// 设备颜色空间主要用于IOS应用程序,因为其它颜色空间无法在IOS上使用。大多数情况下,Mac OS X应用程序应使用通用颜色空间,而不使用设备颜色空间。
// CGColorSpaceCreateDeviceGray:创建设备依赖灰度颜色空间
// CGColorSpaceCreateDeviceRGB:创建设备依赖RGB颜色空间
// CGColorSpaceCreateDeviceCMYK:创建设备依赖CMYK颜色空间
CGColorSpaceRef cs = CGColorSpaceCreateDeviceGray();
//这个是改变二维码颜色的主要属性,必须是灰度空间,作用是将UIImage转变成了灰度图
CGContextRef bitmapRef = CGBitmapContextCreate(NULL, width, height, 8, 0, cs, kCGImageAlphaNone);
CIContext * context = [CIContext contextWithOptions:NULL];
CGImageRef bitmapImage = [context createCGImage:image fromRect:extent];
CGContextSetInterpolationQuality(bitmapRef, kCGInterpolationHigh);
CGContextScaleCTM(bitmapRef, scale, scale);
CGContextDrawImage(bitmapRef, extent, bitmapImage);
CGImageRef scaledImage = CGBitmapContextCreateImage(bitmapRef);
CGContextRelease(bitmapRef);
CGImageRelease(bitmapImage);
return
[UIImage imageWithCGImage:scaledImage];
}
#pragma mark - 创建二维码的主要代码
+ (CIImage *)createQRForString:(NSString *)qrString {
NSData *stringData = [qrString dataUsingEncoding:NSUTF8StringEncoding];
CIFilter *qrFilter = [CIFilter filterWithName:@
"CIQRCodeGenerator"
];
[qrFilter setValue:stringData forKey:@
"inputMessage"
];
[qrFilter setValue:@
"M"
forKey:@
"inputCorrectionLevel"
];
return
qrFilter.outputImage;
}
#pragma mark - 改变二维码的颜色
void
ProviderReleaseData (voidvoid *info,
const
voidvoid *data,
size_t
size){
free
((
void
*)data);
}
+ (UIImage*)imageBlackToTransparent:(UIImage*)image withRed:(CGFloat)red andGreen:(CGFloat)green andBlue:(CGFloat)blue{
const
int
imageWidth = image.size.width;
const
int
imageHeight = image.size.height;
size_t
bytesPerRow = imageWidth * 4;
uint32_t* rgbImageBuf = (uint32_t*)
malloc
(bytesPerRow * imageHeight);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = CGBitmapContextCreate(rgbImageBuf, imageWidth, imageHeight, 8, bytesPerRow, colorSpace,
kCGBitmapByteOrder32Little | kCGImageAlphaNoneSkipLast);
CGContextDrawImage(context, CGRectMake(0, 0, imageWidth, imageHeight), image.CGImage);
int
pixelNum = imageWidth * imageHeight;
uint32_t* pCurPtr = rgbImageBuf;
for
(
int
i = 0; i < pixelNum; i++, pCurPtr++){
if
((*pCurPtr & 0xFFFFFF00) < 0x99999900){
uint8_t* ptr = (uint8_t*)pCurPtr;
ptr[3] = red;
//0~255
ptr[2] = green;
ptr[1] = blue;
}
else
{
uint8_t* ptr = (uint8_t*)pCurPtr;
ptr[0] = 0;
}
}
CGDataProviderRef dataProvider = CGDataProviderCreateWithData(NULL, rgbImageBuf, bytesPerRow * imageHeight, ProviderReleaseData);
CGImageRef imageRef = CGImageCreate(imageWidth, imageHeight, 8, 32, bytesPerRow, colorSpace,
kCGImageAlphaLast | kCGBitmapByteOrder32Little, dataProvider,
NULL,
true
, kCGRenderingIntentDefault);
CGDataProviderRelease(dataProvider);
UIImage* resultUIImage = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
CGContextRelease(context);
CGColorSpaceRelease(colorSpace);
return
resultUIImage;
}
@end
|
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持! 。
原文链接:http://blog.csdn.net/youshaoduo/article/details/53286153 。
最后此篇关于IOS 创建彩色二维码实例详解的文章就讲到这里了,如果你想了解更多关于IOS 创建彩色二维码实例详解的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
可以在 R 中生成二维码吗?是否有允许它的包? 最佳答案 现在在 CRAN 您可以使用 qrencoder包 - https://github.com/hrbrmstr/qrencoder - 这样做
我有一个使用相机扫描二维码的应用程序。当我打开应用程序并转到二维码阅读器时,一切正常。一旦我扫描代码,信息就会发送到另一个 Activity ,但是一旦我点击后退按钮,相机就会变黑(见下文),我就无法
有没有办法为一个二维码创建多个 Action ? 目标是扫描二维码并执行这些操作: 连接WIFI 转至特定网址 我可以用 2 个二维码完成这 2 个操作,但只有一个会更容易 最佳答案 你不能。 仅仅是
在我的应用程序中,我需要实现 Blackberry Messenger 中可用的功能,即用户可以通过扫描他们的 QR 码来添加其他用户。 我找到了可以帮助生成二维码的库,也找到了线程来帮助生成二维码。
我尝试了新的 Google Play 服务功能 - 条码/QR 扫描仪。在 sample应用程序通过点击按钮开始扫描,结果也会在点击时返回。 有没有办法改变它的行为以立即返回第一个检测到的条形码/二维
我正在寻找解密(不仅是解码)二维码的逻辑。最近我看到几个加密二维码的应用程序,比如QuickMark。 .例如,此 QR 使用密码“pass”解密为“StackOverflow”: 如果你使用一个没有
我的公司有一个通过 URL 访问的社交网络平台。 我们正在尝试找到一种方法在体育商店中宣传我们的 URL,只有您来到商店才能访问我们的网站 - 我们不希望将 URL 分享给任何地方的任何人。 我们考虑
我想根据字段卷号生成一个二维码,并使用 JavaScript 文件(客户端验证)将其显示在 ID 名为“vyas_qrcode”的 div 容器中。 生成二维码的逻辑在js文件(qrcode_js.j
我正在研究使用 Android、iOS 和可能的 Windows Phone 上的浏览器扫描二维码的可用方法。理想的解决方案是拥有一个既可以在移动设备屏幕上又可以在全尺寸计算机屏幕上运行的 Ang
我正在开发 Instagram、Snap Chat 和 Facebook 等社交应用。我需要生成用户配置文件的二维码。我从数据库中隐藏了用户 ID。我的应用程序中有一个扫描仪来扫描二维码。该功能运行良
我有一个用于生成 jpeg 和 png 格式的二维码的代码,但还想在 PHP 中生成带有背景图像的 svg 二维码。我正在使用 qrlib.php 生成 jpeg 和 png 格式。 最佳答案 QRl
我正在使用 primefaces 开发网络应用程序。我正在尝试在网页上显示条形码。除了 QR 码外,所有编码器都显示了。我读到这需要两个 jar 文件 barcode4j: 2.1 qrgen:1.4
我正在寻找一个库或方法来解码二维码(或可能是另一种形式的二维条码)并能够实际确定相机的位置和方向。这似乎应该是可行的,但我不完全确定。 有谁知道最好的路线是什么?或者,如果它甚至可能? 最佳答案 zx
我正在尝试创建一个 QR 码,如果在安装了 Facebook 应用程序的手机上扫描,Facebook 应用程序将直接转到 QR 码中保存的类似页面。我尝试过什么this website已经说过了,但没
我使用python-qrcode和reportlab,我想生成一个二维码并显示它而不是将它保存为图像。 def member_card(request): response = HttpRes
好的,我正在使用这个 Javascript QR 代码生成器:https://github.com/davidshimjs/qrcodejs 开箱即用,您可以通过将其包含在页面上来获得字符串输出。
我在检测二维码在哪里时遇到问题。 我需要在它周围画边框。 我使用 AVMetadataObject 贝塞尔曲线路径,但它不起作用。 请帮助我。 - (void)captureOutput:(AVCap
我正在使用已弃用的 Camera 类。我在 onPreviewFrame(byte[] data, Camera camera) 方法中进行处理。 Zbar 扫描仪没有触发“尝试反向”扫描的选项。我发
1、搭个界面 2、写代码 ? 1
我正在尝试使用 pyqrcode 库生成一个 vCard 二维码,但我不知道该怎么做。 我已经阅读了他们的文档 5 次,其中没有提到 vCard,只提到了 URL,在互联网上,我只能找到关于 wifi
我是一名优秀的程序员,十分优秀!